题目:
There are N children standing in a line. Each child is assigned a rating value.
You are giving candies to these children subjected to the following requirements:
Each child must have at least one candy.
Children with a higher rating get more candies than their neighbors.
What is the minimum candies you must give?
idea
code
#include <bits/stdc++.h>
class Solution {
public:
int candy(vector<int> &r) {
int n = r.size();
vector<int> ans(n, 1);
for (int i = 1; i < n; i++){
if (r[i] > r[i-1]) ans[i] = ans[i-1] + 1;
}
for (int i = n-2; i > -1; i--){
if (r[i] > r[i+1] && ans[i] <= ans[i+1]) ans[i] = ans[i+1] + 1;
}
return accumulate(ans.begin(), ans.end(), 0);
}
};