• 135. 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?

    Example 1:

    Input: [1,0,2]
    Output: 5
    Explanation: You can allocate to the first, second and third child with 2, 1, 2 candies respectively.
    

    Example 2:

    Input: [1,2,2]
    Output: 4
    Explanation: You can allocate to the first, second and third child with 1, 2, 1 candies respectively.
                 The third child gets 1 candy because it satisfies the above two conditions.
    class Solution {
        public int candy(int[] ratings) {
            int[] candies = new int[ratings.length];
            Arrays.fill(candies, 1);
            for (int i = 1; i < ratings.length; i++) {
                if (ratings[i] > ratings[i - 1]) {
                    candies[i] = candies[i - 1] + 1;
                }
            }
            for (int i = ratings.length - 2; i >= 0; i--) {
                if (ratings[i] > ratings[i + 1]) {
                    candies[i] = Math.max(candies[i], candies[i + 1] + 1);//防止漏加(防止覆盖之前从左到右的结果),所以取大值
                }
            }
            int sum = 0;
            for(int i : candies) sum += i;
            return sum;        
        }
    }

    从左到右扫描一遍,再从右到左扫描,看左右大小

  • 相关阅读:
    Handle( )
    GetFileOpenName()、GetFilesavename
    笔记linux一些常用命令
    Git的简单使用
    express+mongodb+mongoose简单入门
    浅谈node Async异步处理模块
    parse,tryparse区别
    .NET一般处理程序如何获取AJAX传递的参数
    UOJ461 新年的Dog划分【图论,交互】
    UOJ243【UR #16】破坏导蛋【计算几何,分块】
  • 原文地址:https://www.cnblogs.com/wentiliangkaihua/p/11313937.html
Copyright © 2020-2023  润新知