- 原题题目
- 代码实现(首刷看解 双向遍历 C++)
原题题目
代码实现(首刷看解 双向遍历 C++)
class Solution {
public:
int candy(vector& ratings) {
if (ratings.empty()) return 0;
int nowcandy = 1, mincandy = INT_MAX;
vector candys(ratings.size(), 1);
for (int i = 1; i < ratings.size(); ++i) {
if (ratings[i] > ratings[i - 1]) candys[i] = ++nowcandy;
else nowcandy = 1;
}
nowcandy = 1;
for (int i = ratings.size() - 2; i >= 0; --i) {
if (ratings[i] > ratings[i + 1]) candys[i] = max(++nowcandy, candys[i]);
else nowcandy = 1;
}
int ret = 0;
for (const auto& candy : candys) ret += candy;
return ret;
}
};



