class Solution {
public:
int candy(vector<int> &ratings) {
// Note: The Solution object is instantiated only once and is reused by each test case.
vector<int> candyNum(ratings.size(), 1);
//1. forward
int n = ratings.size();
int curCnt = 0;
for(int i = 1; i < n; ++i)
{
if(ratings[i] > ratings[i-1]) curCnt++, candyNum[i] = curCnt+1;
else curCnt = 0, candyNum[i] = curCnt+1;
}
//2. backward
curCnt = 0;
for(int i = n-2; i >= 0; --i)
{
if(ratings[i] > ratings[i+1]) curCnt++, candyNum[i] = max(candyNum[i], curCnt+1);
else curCnt = 0, candyNum[i] = max(candyNum[i], curCnt+1);
}
//3. get sum
int sum = 0;
for(int i = 0; i < n; ++i)
sum += candyNum[i];
return sum;
}
};[LeetCode]Candy
最新推荐文章于 2019-03-15 09:29:56 发布
本文介绍了一种使用C++实现的糖果分配算法,该算法通过正向和反向遍历评分数组来确保每个孩子的糖果数量至少为1,并且满足糖果数量与评分成正比的原则。
1201

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



