class Solution {
public:
bool check(vector<int> &rate,vector<int> &num)
{
int length=rate.size();
for(int i=1;i<length-1;i++)
{
if(rate[i]>rate[i-1] && rate[i]>rate[i+1] && (num[i]<=num[i-1] || num[i]<=num[i]+1))
return false;
}
return true;
}
int candy(vector<int> &ratings) {
int length=ratings.size();
vector<int> candy(length,1);
do
{
for(int i=1;i<length;i++)
{
if(ratings[i]>ratings[i-1] && ratings[i]>ratings[i+1]) candy[i]+1;
}
}while(!check(ratings,candy));
int sum=0;
for(int i=0;i<length;i++)
sum+=candy[i];
return sum;
}
};leetcode_135_Candy_贪心
最新推荐文章于 2025-08-13 20:20:42 发布
本文介绍了一种用于解决糖果分配问题的算法。该算法通过迭代检查和调整每个孩子获得的糖果数量来确保满足条件:如果一个孩子的评分高于邻居,则该孩子获得的糖果数也必须更多。最终目标是最小化总的糖果数。

5万+

被折叠的 条评论
为什么被折叠?



