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?
详见:https://leetcode.com/problems/candy/description/
class Solution { public: int candy(vector<int>& ratings) { int candy=0; int n=ratings.size(); vector<int> dp(n,1); for(int i=1;i<n;++i) { if(ratings[i]>ratings[i-1]) { dp[i]=dp[i-1]+1; } } for(int i=n-2;i>=0;--i) { if(ratings[i]>ratings[i+1]) { dp[i]=max(dp[i],dp[i+1]+1); } } for(int val:dp) { candy+=val; } return candy; } };
参考:https://www.cnblogs.com/grandyang/p/4575026.html