LeetCode之Candy
2015-03-25 08:38
253 查看
/*本题给小孩分配糖果的规则: 1.每个小孩至少一个糖果。 2.高等级小孩的糖果比相邻的小孩的糖果多。 题目要求最小的糖果数目。直接的想法是: 1.先给每个小孩一个糖果。 2.从左往右扫描等级数组,再从右往左扫描一遍等级数组,保证第2个条件成立。 3.返回总糖果数目。 参考:https://github.com/soulmachine/leetcode*/ class Solution { public: int candy(vector<int> &ratings) { vector<int> candies(ratings.size(), 1);//初始化,每个小孩有1个糖 for(int i = 1; i < ratings.size(); ++i){//从左往右扫描 if(ratings[i] > ratings[i-1]){ candies[i] = std::max(candies[i-1]+1, candies[i]); } } for(int i = ratings.size()-2; i >= 0; --i){//从右往左扫描 if(ratings[i] > ratings[i+1]){ candies[i] = std::max(candies[i+1]+1, candies[i]); } } return std::accumulate(candies.begin(), candies.end(), 0); } };
相关文章推荐
- leetcode Candy
- [LeetCode] Candy
- LeetCode-Candy
- 【LeetCode】Candy
- LeetCode--candy
- [LeetCode]135 Candy
- LeetCode OJ Candy
- leetcode candy
- LeetCode: Candy
- LeetCode: Candy
- leetcode Candy
- LeetCode: Candy
- 【leetcode】Candy(python)
- leetcode Candy
- [LeetCode] Candy (分糖果),时间复杂度O(n),空间复杂度为O(1),且只需遍历一次的实现
- leetcode[135] Candy
- [LeetCode] Candy
- LeetCode139: Candy
- 【leetcode】Candy
- Leetcode 135 Candy