[LeetCode] Candy
2014-09-25 23:15
330 查看
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?
通过分析,我们可以发现:无外乎就是3种情况:举例来说
(1) rating[0]>rating[1] 如果 candy[0]<=candy[1] candy[0]=candy[1]+1;
(1) rating[0]=rating[1] 不用管,继续走
(1) rating[0]<rating[1]
如果 candy[0]>=candy[1] candy[1]=candy[0]+1;
正的走一遍,我们只考虑i和i+1的关系,也就是child和他右边孩子的糖果数量
反过来扫一遍, 我们只考虑 i 和i-1的关系,child和他左边孩子的糖果数量
这样每一个child的左右就都满足了。一次通过
public int candy(int[] ratings) {
int n=ratings.length;
int[] c= new int
;
Arrays.fill(c,1);
for(int i=0;i<n-1;i++){
if(ratings[i]>ratings[i+1] && c[i]<=c[i+1]){
c[i]=c[i+1]+1;
} else if(ratings[i]<ratings[i+1] && c[i]>=c[i+1]){
c[i+1]=c[i]+1;
}
}
for(int i=n-1;i>=1;i--){
if(ratings[i]>ratings[i-1] && c[i]<c[i-1]){
c[i]=c[i-1]+1;
} else if(ratings[i]<ratings[i-1] && c[i-1]<=c[i]){
c[i-1]=c[i]+1;
}
}
int sum=0;
for(int candy: c){
sum+=candy;
}
return sum;
}
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?
通过分析,我们可以发现:无外乎就是3种情况:举例来说
(1) rating[0]>rating[1] 如果 candy[0]<=candy[1] candy[0]=candy[1]+1;
(1) rating[0]=rating[1] 不用管,继续走
(1) rating[0]<rating[1]
如果 candy[0]>=candy[1] candy[1]=candy[0]+1;
正的走一遍,我们只考虑i和i+1的关系,也就是child和他右边孩子的糖果数量
反过来扫一遍, 我们只考虑 i 和i-1的关系,child和他左边孩子的糖果数量
这样每一个child的左右就都满足了。一次通过
public int candy(int[] ratings) {
int n=ratings.length;
int[] c= new int
;
Arrays.fill(c,1);
for(int i=0;i<n-1;i++){
if(ratings[i]>ratings[i+1] && c[i]<=c[i+1]){
c[i]=c[i+1]+1;
} else if(ratings[i]<ratings[i+1] && c[i]>=c[i+1]){
c[i+1]=c[i]+1;
}
}
for(int i=n-1;i>=1;i--){
if(ratings[i]>ratings[i-1] && c[i]<c[i-1]){
c[i]=c[i-1]+1;
} else if(ratings[i]<ratings[i-1] && c[i-1]<=c[i]){
c[i-1]=c[i]+1;
}
}
int sum=0;
for(int candy: c){
sum+=candy;
}
return sum;
}
相关文章推荐
- leetcode->Candy
- LEETCODE: Candy
- 开始leetcode day9:Candy
- leetcode: Candy
- leetcode_Candy
- 4.19 leetcode -19 candy
- LeetCode 135:candy 题解 Python
- Leetcode 动态规划 Candy
- leetcode :Candy
- [LeetCode]Candy
- https://leetcode.com/problems/candy/
- [LeetCode]—Candy 分糖果问题
- leetcode:candy
- Candy -- leetcode
- [leetcode] Candy
- [LeetCode] 发糖果 Candy
- [LeetCode] Candy
- LeetCode:Candy
- LeetCode139: Candy
- 【leetcode】Candy