LeetCode-Candy
2013-10-08 23:33
429 查看
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?
遇到上升段直接更新值,遇到下降段则记录下降开始点,从下一个开始上升点之前到下降点更新值
View Code
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?
遇到上升段直接更新值,遇到下降段则记录下降开始点,从下一个开始上升点之前到下降点更新值
class Solution { public: int candy(vector<int> &ratings) { if(ratings.size()==0)return 0; if(ratings.size()==1)return 1; if(ratings.size()==2){ if(ratings[0]==ratings[1])return 2; else return 3; } vector<int> ca; ca.resize(ratings.size(),-1); bool up; int start; int i=0; if(ratings[i]<=ratings[i+1]){ ca[i]=1; up=true; } else{ up=false; start=i; } i++; while(true){ if(up){ if(ratings[i]<=ratings[i-1]){ up=false; if(ratings[i]==ratings[i-1])start=i; else start=i-1; if(i==ratings.size()-1){ ca[i]=1; for(int j=i-1;j>=start;j--)ca[j]=max(ca[j],ca[j+1]+1); } } else{ ca[i]=max(ca[i],ca[i-1]+1); } } else{ if(ratings[i]>=ratings[i-1]){ up=true; ca[i-1]=1; for(int j=i-2;j>=start;j--)ca[j]=max(ca[j],ca[j+1]+1); if(ratings[i]==ratings[i-1]){ if(i+1<ratings.size()){ if(ratings[i+1]>=ratings[i]){ up=true; ca[i]=1; } else{ up=false; start=i; } } else{ ca[i]=1; } } else{ up=true; ca[i]=2; } } else{ if(i==ratings.size()-1){ ca[i]=1; for(int j=i-1;j>=start;j--)ca[j]=max(ca[j],ca[j+1]+1); } } } i++; if(i==ratings.size())break; } int sum=0; for(int i=0;i<ratings.size();i++){ sum+=ca[i]; } return sum; } };
View Code
相关文章推荐
- Leetcode Candy
- LeetCode -- Candy
- Leetcode: Candy
- [LeetCode]题解(python):135-Candy
- leetcode之Candy
- 【LeetCode】Candy
- [LeetCode] Candy 分糖果问题
- leetcode135~Candy
- Leetcode225: Candy
- [LeetCode] Candy
- Leetcode - candy
- leetcode 135 —— Candy
- LeetCode: Candy
- [leetcode-135]Candy(java)
- [LeetCode]Candy
- leetcode Candy
- LeetCode:Candy
- LeetCode2.1.22 (Candy)
- Leetcode 之 Candy
- leetcode 之Candy(12)