题解 | #分糖果问题#

分糖果问题

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

  • 本人没那么聪明,用的笨办法,我也很烦,但总归是写出来了,我就分享一下。
  • 写这种题,先要比较前后的大小,根据前后大小判断哪个先加
  • 【数组下标定位的这个设为arr[i]】
  • 我们先比较arr[i]和arr[i+1]的大小,判断哪个需要加
  • 然后比较arr[i]和arr[i-1]的大小,判断哪个需要加
  • 加起来以后求总和就行了
```class Solution {
public:
    /**
     * pick candy
     * @param arr int整型vector the array
     * @return int整型
     */
    int candy(vector<int>& arr) {
        // write code here
        int count=0;
        if(arr.size()==0)return 0;
        vector<int>num;
        for(int i=0;i<arr.size();i++){
            num.push_back(1);
        }
        for(int i=0;i<arr.size()-1;++i){
            if(arr[i]>arr[i+1])num[i]=num[i+1]+1;
            else if(arr[i]<arr[i+1])num[i+1]=num[i]+1;
        }
        for(int i=arr.size()-1;i>0;--i){
            if(arr[i-1]>arr[i])num[i-1]=num[i]+1;
            else if(arr[i-1]<arr[i]&&num[i]<=num[i-1])num[i]=num[i-1]+1;
        }
        for(int i=0;i<arr.size();i++){
            count+=num[i];
        }
        return count;
    }
};
全部评论

相关推荐

鲸鸿:实习协议不用管签多久,要走的时候提前三天说就可以了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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