变量简洁正确完整思路

正向,第i人如果ratings[i]>tatings[i-1]则need[i]=need[i-1]+1否则need[i]=1,算出正向需要的每个人最少谈过,再逆向,如果ratings[i]>ratings[i+1]则needi=needi+1否则=1,然后needi和need[i]中的较大者算入答案
 
精确定义
need[i] 下标i正向需要数量
needi 下标i逆向需要数量
class Solution {
public:
    int candy(vector<int>& ratings) {
        int n=ratings.size();
        vector<int>need(n,1);
        for(int i=1;i<n;i++){
            if(ratings[i]>ratings[i-1])need[i]=need[i-1]+1;
            else need[i]=1;
        }
        int needi=max(need[n-1],1);
        int ans=needi;
        for(int i=n-2;i>=0;i--){
            if(ratings[i]>ratings[i+1])needi=needi+1;
            else needi=1;
            //cout<<needi;
            ans+=max(needi,need[i]);
        }
        return ans;
    }   
};

 

posted on 2021-08-03 17:46  offer快到碗里来~  阅读(44)  评论(0)    收藏  举报