LeetCode 135. Candy
2017-10-10 17:07
330 查看
135. Candy
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?
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?
/* 题意: N个孩子站成一排,给每个人设定一个权重。按照如下的规则分配糖果: (1)每个孩子至少分得一颗糖果 (2)权重较高的孩子,会比他的邻居获得更多的糖果 问一共最少需要多少颗糖果?*/ /* 思路: 设每个孩子分到的糖果数组为res ,初始值为1,因为每个人至少分到一颗糖 1、与前面的邻居比较,如果ratings[i]>ratings[i-1],则res[i]=res[i-1]+1, 然后向后遍历数组ratings 2、与后面的邻居比较,如果ratings[i]>ratings[i+1]且res[i]-res[i+1]<1, 则res[i]=res[i+1]+1,然后向前遍历数组ratings 3、对res求和即为最少需要的糖果 */ class Solution { public: int candy(vector<int>& ratings) { int sum = 0; vector<int>res(ratings.size(), 1); for(int i = 1; i < ratings.size(); i++){ if(ratings[i] > ratings[i-1]) res[i] = res[i-1] + 1; } for(int i = ratings.size()-2; i >= 0; i--){ if(ratings[i] > ratings[i+1] && res[i] - res[i+1] < 1) res[i] = res[i+1] + 1; } for(int i = 0; i < res.size(); i++) sum+= res[i]; return sum; } };
相关文章推荐
- leetcode 135. Candy
- leetcode-135. Candy
- LeetCode 135. Candy(糖果)
- Leetcode 135. Candy
- **Leetcode 135. Candy | 思维题
- LeetCode 135. Candy
- LeetCode题解–135. Candy
- leetcode - 135. Candy
- [leetcode] 135. Candy 解题报告
- [LeetCode] 135. Candy
- [leetcode] 【数组】 135. Candy
- [LeetCode] 135. Candy java
- LeetCode 135. Candy
- leetcode解题报告:135. Candy
- LeetCode 135. Candy (O(n)时间 O(n)和O(1)空间的两种实现)
- Leetcode 135. Candy
- leetcode题解-135. Candy
- leetcode-135. Candy
- leetcode 135. Candy
- [LeetCode]135. Candy