题目:
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?
//题意:N个孩子站成一排,每个孩子分配一个分值。给这些孩子派发糖果,满足如下要求: //每个孩子至少一个 //分值更高的孩子比他的相邻位的孩子获得更多的糖果 //求至少分发多少糖果?
代码如下:import java.util.*; public class Solution { public int candy(int[] ratings) { if (ratings==null||ratings.length==0) {return 0;} int n = ratings.length; int[] v = new int[n]; int sum =0; //初始,每个孩子至少有一颗糖 Arrays.fill(v,1); //从左向右扫描,分值大的增加一个糖果 for(int i=1;i<n;i++){ if(ratings[i]>ratings[i-1]) {v[i]=v[i-1]+1;} } //从右向左扫描,分值大的多一个糖果 for(int i=n-1;i>0;i--){ if(ratings[i]<ratings[i-1]&&v[i]>=v[i-1]) { v[i-1]=v[i]+1; } sum+=v[i]; } sum +=v[0]; return sum; } }