首页 > 其他 > 详细

Candy

时间:2015-09-26 02:06:20      阅读:284      评论:0      收藏:0      [点我收藏+]

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[] left = new int[ratings.length];
        int[] right = new int[ratings.length];
        left[0] = 1;
        for (int i = 1; i < ratings.length; i++) {
        	if (ratings[i] > ratings[i-1]) {
        		left[i] = left[i-1]+1;
        	} else {
        		left[i] = 1;
        	}
        	
		}
        right[ratings.length-1] = left[ratings.length-1];
        for (int i = ratings.length-2; i >= 0; i--) {
        	if (ratings[i] > ratings[i+1]) {
        		right[i] = right[i+1]+1;
        	} else {
        		right[i] = 1;
        	}
		}
        int res = 0;
        for (int i = 0; i < ratings.length; i++) {
			res += Math.max(left[i], right[i]);
		}
        return res;
    }
}

?

Candy

原文:http://hcx2013.iteye.com/blog/2246263

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!