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;    
        }
    }
    

      

  • 相关阅读:
    codeforces 501 C,D,E
    bzoj 3172 单词 ac自动机|后缀数组
    HDU2459 后缀数组+RMQ
    POJ 3294 二分找超过一半字符串中存在的子串
    头文件
    python爬取文本
    python爬取图片
    NEW
    dsu on tree 练习题
    lzz分块+莫队
  • 原文地址:https://www.cnblogs.com/averillzheng/p/3801659.html
Copyright © 2011-2022 走看看