leetcode No135. Candy
2017-07-12 16:12
423 查看
Question
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?
小朋友分糖果,要求:
1、每个小朋友至少分一个糖
2、拥有高rate的小朋友分的糖比他相邻的小朋友多
Algorithm
1、前向遍历,如果右比左高,v[i]=v[i-1]+12、后向遍历,如果左比右高,v[i]=max(v[i],v[i+1]+1)
如何证明?
Accepted Code
class Solution { public: int candy(vector<int>& ratings) { int n=ratings.size(); int sum=0; vector<int> v(n,1); for(int i=1;i<n;i++){ if(ratings[i] > ratings[i-1]){ v[i]=v[i-1]+1; } } sum = v[n-1]; for(int i=n-1;i>0;i--){ if(ratings[i-1]>ratings[i] && v[i-1]<=v[i]){ v[i-1]=v[i]+1; } sum += v[i-1]; } return sum; } };
相关文章推荐
- leetcode No283. Move Zeroes
- leetcode-135. Candy
- Leetcode no. 217
- 【LeetCode从零单排】No83 Remove Duplicates from Sorted List
- leetcode No111. Minimum Depth of Binary Tree
- [LeetCode]135. Candy
- [leetcode] 【数组】 135. Candy
- LeetCode No332. Reconstruct Itinerary
- 【LeetCode从零单排】No15 3Sum
- Leetcode no. 18
- leetcode No230. Kth Smallest Element in a BST
- Leetcode no. 172
- [LeetCode]Max Sum of Rectangle No Larger Than K
- Leetcode no. 26
- leetcode No152. Maximum Product Subarray
- Leetcode 135. Candy
- Leetcode no. 219
- Leetcode no. 344
- leetcode 135. Candy
- Leetcode no. 32