要求:站成一排的孩子每个人有一个分数,分数高的孩子分到的糖果多,至少要多少个糖果
思路:左右两边分别遍历一次,为啥就可以呢。还有常数空间的解法不懂
class Solution {
public:
int candy(vector<int>& ratings) {
vector<int> candys(ratings.size(),1);
for(int i = 1; i < ratings.size(); i++) {
if(ratings[i] > ratings[i-1]) candys[i] = candys[i-1] + 1;
}
for(int i = ratings.size()-2; i >= 0; i--) {
if(ratings[i] > ratings[i+1]) candys[i] = max(candys[i+1]+1,candys[i]);
}
/* 统计结果 */
int result = 0;
for(int i = 0; i < candys.size(); i++)
result += candys[i];
return result;
}
};