您的位置:首页 > 其它

[Leetcode] 135. Candy

2015-04-11 22:56 260 查看
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?

public class Solution {
public int candy(int[] ratings) {
if(ratings == null || ratings.length == 0) return 0;
int[] dp = new int[ratings.length];
dp[0] = 1;
for(int i = 1; i < dp.length; i++){
dp[i] = ratings[i] > ratings[i - 1]? dp[i - 1] + 1: 1;
}
int result = dp[dp.length - 1];
for(int i = dp.length - 2; i >= 0; i--){
if(ratings[i] > ratings[i + 1] && dp[i] <= dp[i + 1]){
dp[i] = dp[i + 1] + 1;
}
result += dp[i];
}
return result;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: