局部最优:只要右边评分比左边大,右边就多一个糖果
全局最优:相邻孩子中,评分高的右孩子获得比左孩子更多的糖果
局部最优推全局最优
class Solution {
public:
int candy(vector<int>& ratings) {
vector<int>candyvec(ratings.size(),1);
//从前到后
for(int i=1;i<ratings.size();i++)
{
if(ratings[i]>ratings[i-1])candyvec[i]=candyvec[i-1]+1;
}
//从后到前
for(int i=ratings.size()-2;i>=0;i--)
{
if(ratings[i]>ratings[i+1])candyvec[i]=max(candyvec[i],candyvec[i+1]+1);
}
int result=0;
for(int i=0;i<candyvec.size();i++)
{
result+=candyvec[i];
}
return result;
}
};