leetcode: Candy
2015-03-21 10:40
218 查看
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?
Hide Tags
Greedy
【贪心法解决,关于贪心法,以后要具体总结】
思路一:1)首先每个人分一个糖果 2)从左往右,当第 i 个人rating > i-1 人的rating 时,且i 的糖果没有第 i-1 个人的糖果多时,num[i] = num[i-1] + 1;
3)从右往左,当第 i 个人rating > i-1 人的rating 时,且i 的糖果没有第 i-1 个人的糖果多时,num[i] = num[i-1] + 1;
4)将所有的num[i] 相加即可
代码如下:
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?
Hide Tags
Greedy
【贪心法解决,关于贪心法,以后要具体总结】
思路一:1)首先每个人分一个糖果 2)从左往右,当第 i 个人rating > i-1 人的rating 时,且i 的糖果没有第 i-1 个人的糖果多时,num[i] = num[i-1] + 1;
3)从右往左,当第 i 个人rating > i-1 人的rating 时,且i 的糖果没有第 i-1 个人的糖果多时,num[i] = num[i-1] + 1;
4)将所有的num[i] 相加即可
代码如下:
class Solution { public: int candy_solu_one(vector<int> &ratings) { int len = ratings.size(); int* num = new int[len]; int total = 0; if (len <= 1) return len; for (int i = 0; i < len; i++) num[i] = 1; for (int j = 1; j < len; j++) { if (ratings.at(j) > ratings.at(j - 1) && num[j] <= num[j - 1]) { num[j] = num[j - 1] + 1; } } for (int j = len - 1; j >= 1; j--) { if (ratings.at(j) < ratings.at(j - 1) && num[j] >= num[j - 1]) { num[j - 1] = num[j] + 1; } } for (int j = 0; j < len; j++) total += num[j]; return total; } };
相关文章推荐
- Candy:对样例存在困惑的一道leetcode
- [leetcode 135] Candy
- [LeetCode] 130: Candy
- leetCode 刷题记录 Candy
- LeetCode 解题报告 Candy
- LeetCode Candy 两种解法
- leetCode Candy解题分享
- leetcode || 135、Candy
- [LeetCode 135] Candy
- leetcode - Candy
- [Leetcode]Candy
- Candy [leetcode]
- [LeetCode]Candy
- Leetcode-Candy
- LeetCode :: Candy
- Candy [leetcode] O(n)时间复杂度,O(1)空间复杂度的方法
- Candy--LeetCode
- [leetcode]Candy
- LeetCode – Refresh – Candy
- leetcode Candy