2.1.22 Candy
描述
ere 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 static int solution2_1_22(int[] rating){
if(rating.length==1)
return 1;
else{
int[] candy=new int[rating.length];
candy[0]=1;
for(int i=1;i<candy.length;i++){
if (rating[i]>rating[i-1])
candy[i]=candy[i-1]+1;
else
candy[i]=1;
}
for(int i=rating.length-2;i>=0;i--){
if((rating[i]>rating[i+1])&&(candy[i]<=candy[i+1]))//注意这里后一半的判断条件不能少
candy[i]=candy[i+1]+1;
}
int total=0;
for(int i=0;i<candy.length;i++){
total+=candy[i];
}
return total;
}
}