Leetcode-135-Candy

2019-05-17  本文已影响0人  单调不减

这个题我之前好像在某公司的笔试题里见过,其实思路并不是很复杂,遍历一遍ratings,并不断记录连续上升的steps数和连续下降的steps数即可,当然还需要记录下降前峰值的高度,当下降到零的时候将从峰值到当前位置的糖果数加一。

代码如下:

class Solution 
{
public:
    int candy(vector<int>& ratings) 
    {
        int upStep=0,downStep=0,peak=1,ans=1;
        for(int i=1;i<ratings.size();i++)
        {
            if(ratings[i-1]<ratings[i])
            {
                upStep++;
                downStep=0;
                peak=upStep+1;
                ans+=peak;
            }
            else if(ratings[i-1]==ratings[i])
            {
                upStep=downStep=0;
                peak=1;
                ans+=peak;
            }
            else
            {
                upStep=0;
                downStep++;
                ans+=(peak-downStep>0)?downStep:downStep+1;
            }
        }
        return ans;
    }
};
上一篇 下一篇

猜你喜欢

热点阅读