leetcode15.candy

来源:互联网 发布:java super方法 编辑:程序博客网 时间:2024/05/17 05:09
问题描述如下:

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?

java代码如下:

package leetcode12.candy;public class Solution {public static void main(String []args){int []ratings={1,2,3,3,3};System.out.println(candy(ratings));}public static int candy(int []ratings){int len=ratings.length;if(ratings.length==0){return 0;}int min=len;int []candy=new int[len];int cur=0;for(int i=1;i<len;i++){if(ratings[i]>ratings[i-1]){cur++;}else{cur=0;}candy[i]=cur;}cur=0;for(int i=len-2;i>=0;i--){if(ratings[i]>ratings[i+1]){cur++;}else{cur=0;}candy[i]=Math.max(candy[i], cur);min+=candy[i];}min+=candy[len-1];return min;}}

总结:遍历两边数组,从左到右一遍,从右到左一遍

0 0