Leetcode135
1.问题描述
2.解决方案
这思路怎么说呢,其实说起来也很简单,就遍历两边分别确定1>2 2<1两种情况,但是吧很难想!
(没什么好的办法,把这个题记住并且常看慢慢感悟吧!)
class Solution {
public:
int candy(vector<int>& ratings) {
int len=ratings.size();
vector<int> candy(len,1);
//1.右大孩子大于左小孩子 1<2
for(int i=1;i<len;i++){
if(ratings[i-1]<ratings[i]) candy[i]=candy[i-1]+1;
}
//2.左大孩子大于右小孩子 2>1
for(int i=len-2;i>=0;i--){
if(ratings[i]>ratings[i+1])
candy[i]=max(candy[i],candy[i+1]+1);
}
return accumulate(candy.begin(),candy.end(),0);
}
};