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
最新推荐文章于 2021-01-25 22:21:34 发布