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?

import java.util.*;
public class Solution {
    public int candy(int[] ratings) {
        int n = ratings.length;
        if(n==0 || ratings == null)
            return 0;
        int[] count = new int[n];
        int sum=0;
        //初始,每个孩子至少有一颗糖
        Arrays.fill(count, 1); 
        for(int i=1; i<n; i++){
            if(ratings[i] > ratings[i-1]){
                count[i] = count[i-1]+1;
            }
        }
        for(int i=n-1; i>0; i--){
            if(ratings[i]<ratings[i-1] && count[i]>=count[i-1]){
                count[i-1] = count[i]+1;
            }
            sum += count[i];
        }
        sum += count[0];
        return sum;
         
    }  
}

 

上一篇:三次握手 四次挥手


下一篇:OSI七层模型和TCP/IP模型