先从左向右扫描一遍,如果当前小盆宇比左边的小盆宇评分高,就多给他一颗糖,然后再从右向左扫描一遍。
class Solution {
public:
int candy(vector<int> &ratings) {
int res = 0;
int n = ratings.size();
if (n == 0) {
return res;
}
int *t = new int[n];
for (int i = 0; i < n; ++i) {
t[i] = 1;
}
for (int i = 1; i < n; ++i) {
if (ratings[i] > ratings[i-1]) {
t[i] = t[i-1] + 1;
}
}
for (int i = n - 1; i >= 1; --i) {
if (ratings[i] < ratings[i-1]) {
t[i-1] = (t[i] + 1) > t[i-1] ? (t[i] + 1) : t[i-1];
}
}
for (int i = 0; i < n; ++i) {
res += t[i];
}
return res;
}
};