zoukankan      html  css  js  c++  java
  • leetcode--Candy

    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 {
        /**This algorithm need O(n) time.<br>
         *@author Averill Zheng
         *@version 2014-06-21
         *@since JDK 1.7
         */
        public int candy(int[] ratings) {
            int length = ratings.length, temp = 1, max = 0;
    		boolean decrease = true;
    		int total = 0;
    		if(length > 0){
    			total = 1;
    			for(int i = 1 ; i < length; ++i){
    				if(ratings[i] > ratings[i - 1]){
    					if(decrease){
    						temp = 1;
    						decrease = false;
    					}
    					total +=(++temp);
    					max = temp;
    				}
    				else if(ratings[i] < ratings[i - 1]){
    					if(!decrease){
    						temp = 0;
    						decrease = true;
    					}
    					total +=(++temp);
    					if(max > 0 && temp >= max){
    						total += (++temp - max);
    						max = 0;
    					}
    				}
    				else{
    					decrease = true;
    					total += 1;
    					max = 0;
    					temp = 1;
    				}
    			}
    		}
    		return total;    
        }
    }
    

      

  • 相关阅读:
    MyBatis与Spring的整合
    Spring核心AOP(面向切面编程)
    Spring核心IoC(控制反转)
    动态SQL
    SQL映射文件
    初识MyBatis
    注解和反射
    Linux配置SVN和MemCached
    Java Web Day10
    Java Web Day9
  • 原文地址:https://www.cnblogs.com/averillzheng/p/3801659.html
Copyright © 2011-2022 走看看