
题目描述
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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
public class { public int candy(int[] ratings) { if(ratings == null || ratings.length == 0) return 0;
int[] nums = new int[ratings.length];
Arrays.fill(nums, 1);
for(int i = 1; i < ratings.length; i++){ if(ratings[i] > ratings[i-1]){ nums[i] = nums[i-1] + 1; } } for(int i = ratings.length - 1; i > 0; i--){ if(ratings[i-1] > ratings[i] && nums[i-1] <= nums[i]) nums[i-1] = nums[i] + 1; }
int res = 0; for(int i = 0; i < nums.length; i++){ res += nums[i]; }
return res; } }
|
近期评论