class Solution {
public:
int candy(vector<int>& ratings) {
//这题比较难,因为它需要考虑两边,比如说凹的形式,左右边高的情况,所以我们需要两边遍历
vector<int>CandtVce(ratings.size(),1);
//从左到右,给大的加1
for(int i=1;i<ratings.size();i++){
if(ratings[i]>ratings[i-1]){
CandtVce[i]=CandtVce[i-1]+1;
}
}
//从右到左
for(int i=ratings.size()-2;i>=0;i--){//这里减2是因为凹进去的嘛
if(ratings[i]>ratings[i+1]){
CandtVce[i]=max(CandtVce[i],CandtVce[i+1]+1);
}
}
int result=0;
for(int i=0;i<ratings.size();i++){
result+=CandtVce[i];
}
return result;
}
};
leetcode135 分发糖果
最新推荐文章于 2024-10-08 10:36:00 发布