首页 > 代码库 > leetcode Candy
leetcode Candy
Candy
Total Accepted: 17540 Total Submissions: 92484My SubmissionsThere 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?
Discuss
/** * Abstract each slope, and sort by the length of the slop. For those slop whose length is one, then add one from * it bottom. The candy is the sum from the bottom to ceil. * When abstract the slope, we should node the length of the length of the before slop. * 1. if the ratings equals to their neighbors? I think it should be in just one. * * */ //9:38->the equals should get just 1,not equal than its neighbor.10:00 finished. class Solution { public: int candy(vector<int> &ratings) { int minCandy = 0,tmp=0; int i=0,len = ratings.size(); // those who's rating equals to it's neighbors should be just one vector<int> candies(len,1); int candy = 1; candies[0] = 1; // from left to right for(i=1;i<len;i++) { if(ratings[i]>ratings[i-1]) { candies[i] = candies[i-1]+1; } } // from right to left for(i=len-2;i>=0;i--) { if(ratings[i]>ratings[i+1]) { tmp = candies[i+1]+1; if(tmp>candies[i]) { candies[i] = tmp; } } } // add the sum for(i=0;i<len;i++) { minCandy += candies[i]; } return minCandy; } };
leetcode Candy
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。