
变量简洁正确完整思路
正向,第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; } };
浙公网安备 33010602011771号