LeetCode - Candy
2015-04-12 03:17
211 查看
https://leetcode.com/problems/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?
这道题的解法是:
1.从左往右扫描,如果当前数比前一个数大,那么当前位置的糖果是前一位置的糖果加1,否则当前位置糖果为1.
2.从右往左扫描,如果当前数比后一个数大,那么当前位置的糖果是后一位置的糖果加1和自己本身有的糖果数的最大值,否则保持自己的糖果数不变。
3.扫描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?
这道题的解法是:
1.从左往右扫描,如果当前数比前一个数大,那么当前位置的糖果是前一位置的糖果加1,否则当前位置糖果为1.
2.从右往左扫描,如果当前数比后一个数大,那么当前位置的糖果是后一位置的糖果加1和自己本身有的糖果数的最大值,否则保持自己的糖果数不变。
3.扫描candy数组,求和。
public class Solution { public int candy(int[] ratings) { int[] candy = new int[ratings.length]; candy[0] = 1; for(int i=1; i<ratings.length; i++){ if(ratings[i]>ratings[i-1]) candy[i]=candy[i-1]+1; else candy[i] = 1; } for(int i=ratings.length-2; i>=0; i--){ if(ratings[i]>ratings[i+1]) candy[i] = Math.max(candy[i], candy[i+1]+1); } int total = 0; for(int i=0; i<candy.length; i++){ total += candy[i]; } return total; } }
相关文章推荐
- [Leetcode] candy 糖果
- [LeetCode]Candy
- leetcode 150: Candy
- LeetCode 135 Candy (贪心 构造)
- Leetcode: Candy
- [leetcode] Candy
- leetcode 17 Candy
- leetcode之Candy
- leetcode第一刷_Candy
- 【leetcode】Candy(python)
- [LeetCode][JavaScript]Candy
- leetcode -- Candy -- 重点
- [Leetcode] Candy (Java)
- Candy -- LeetCode
- (LeetCode 135) Candy
- [LeetCode] Candy
- Leetcode - candy
- Leetcode:Candy
- Candy ---- LeetCode
- [LeetCode]—Candy 分糖果问题