Leetcode: Candy
2014-01-11 17:33
387 查看
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?
从左到右扫描一遍,再从右到左扫描一遍。Tricky的地方是相等的rating可以分到的糖果不一样多。
=====================第二次====================
class Solution {
public:
int candy(vector<int> &ratings) {
vector<int> candies(ratings.size(), 1);
for (int i = 1; i < ratings.size(); ++i) {
if (ratings[i] > ratings[i-1]) {
candies[i] = candies[i-1] + 1;
}
}
for (int i = ratings.size() - 2; i >= 0; --i) {
if (ratings[i] > ratings[i+1]) {
candies[i] = max(candies[i], candies[i+1] + 1);
}
}
int result = 0;
for (int i = 0; i < candies.size(); ++i) {
result += candies[i];
}
return result;
}
};
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?
从左到右扫描一遍,再从右到左扫描一遍。Tricky的地方是相等的rating可以分到的糖果不一样多。
class Solution { public: int candy(vector<int> &ratings) { int size = ratings.size(); vector<int> candies(size, 1); // Scan from left to right for (int i = 1; i < size; ++i) { if (ratings[i] > ratings[i-1]) { candies[i] = candies[i-1] + 1; } } // Scan from right to left int result = candies[size - 1]; for (int i = size - 2; i >= 0; --i) { if (ratings[i] > ratings[i+1]) { candies[i] = max(candies[i], candies[i+1] + 1); } result += candies[i]; } return result; } };
=====================第二次====================
class Solution {
public:
int candy(vector<int> &ratings) {
vector<int> candies(ratings.size(), 1);
for (int i = 1; i < ratings.size(); ++i) {
if (ratings[i] > ratings[i-1]) {
candies[i] = candies[i-1] + 1;
}
}
for (int i = ratings.size() - 2; i >= 0; --i) {
if (ratings[i] > ratings[i+1]) {
candies[i] = max(candies[i], candies[i+1] + 1);
}
}
int result = 0;
for (int i = 0; i < candies.size(); ++i) {
result += candies[i];
}
return result;
}
};
相关文章推荐
- [LeetCode]Candy, 解题报告
- 【leetcode】Candy
- Leetcode -- Candy
- LeetCode题解:Candy
- LeetCode: Candy
- LeetCode: Candy
- 6 Candy_Leetcode
- [LeetCode]Candy
- Leetcode135(Candy)
- [Leetcode][python]Candy
- LeetCode || Candy
- leetcode -- Candy
- leetcode:Candy 【Java】
- [LeetCode] Candy
- Leetcode135 candy
- leetCode解题报告之Candy(简单回溯)
- [LeetCode]Candy——分糖果问题
- Leetcode|Candy
- [Leetcode 135, Hard] Candy
- [LeetCode] Candy