题解 | #分糖果问题#

分糖果问题

https://www.nowcoder.com/practice/76039109dd0b47e994c08d8319faa352

#include <vector>
class Solution {
public:
    /**
     * pick candy
     * @param arr int整型vector the array
     * @return int整型
     */
    vector<int>nums;
    int candy(vector<int>& arr) {
        // write code here
        nums.resize(arr.size(),1);//默认全都给一个
        for(int i=1;i<arr.size();i++){//从前往后 如果后面那个大的话,就在前一个基础上多分一个
            if(arr[i]>arr[i-1]) nums[i]=nums[i-1]+1;
        }
        for(int i=arr.size()-1;i>0;i--){//从后往前 如果前面那个大的话 取本身和后一个基础上加1的较大值
            if(arr[i-1]>arr[i]) nums[i-1]=max(nums[i-1],nums[i]+1);
        }
        int ans=0;
        for(int i=0;i<nums.size();i++){
            ans+=nums[i];
        }

        return ans;
    }
};

全部评论

相关推荐

面了100年面试不知...:今年白菜这么多,冬天可以狂吃了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-21 11:29
已编辑
斯卡蒂味的鱼汤:知道你不会来数马,就不捞你😂最近数马疯狂扩招,招聘要求挺低的,你能力肯定够,应该就是因为太强了,知道你不会来才不捞你
投递腾讯云智研发等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务