面试算法-45-分发糖果

题目

n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。

你需要按照以下要求,给这些孩子分发糖果:

每个孩子至少分配到 1 个糖果。
相邻两个孩子评分更高的孩子会获得更多的糖果。
请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目 。

示例 1:

输入:ratings = [1,0,2]
输出:5
解释:你可以分别给第一个、第二个、第三个孩子分发 2、1、2 颗糖果。

class Solution {
    public int candy(int[] ratings) {
        int n = ratings.length;
        int[] left = new int[n];
        left[0] = 1;
        for (int i = 1; i < n; i++) {
            if (ratings[i - 1] < ratings[i]) {
                left[i] = left[i - 1] + 1;
            } else {
                left[i] = 1;
            }
        }

        int[] right = new int[n];
        right[n - 1] = 1;
        for (int i = n - 2; i >= 0; i--) {
            if (ratings[i] > ratings[i + 1]) {
                right[i] = right[i + 1] + 1;
            } else {
                right[i] = 1;
            }
        }

        int sum = 0;
        for (int i = 0; i < n; i++) {
            sum += Math.max(left[i], right[i]);
        }
        return sum;
    }
}

相关推荐

  1. 面试算法-45-分发糖果

    2024-03-20 01:02:04       23 阅读
  2. 分发糖果——使用贪心算法

    2024-03-20 01:02:04       14 阅读
  3. 面试经典150题——分发糖果

    2024-03-20 01:02:04       12 阅读
  4. Day34|贪心算法|分发糖果

    2024-03-20 01:02:04       25 阅读
  5. 63 贪心算法分发糖果的问题

    2024-03-20 01:02:04       39 阅读
  6. 面试算法-41-打家劫舍

    2024-03-20 01:02:04       22 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-20 01:02:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-20 01:02:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-20 01:02:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-20 01:02:04       20 阅读

热门阅读

  1. leetcode 139. 单词拆分

    2024-03-20 01:02:04       19 阅读
  2. 【Numpy】(2)numpy对象和random模块

    2024-03-20 01:02:04       20 阅读
  3. 如何在海外服务器上配置静态路由?

    2024-03-20 01:02:04       21 阅读
  4. YS/T 429.2-2012 有机聚合物喷涂幕墙铝单板检测

    2024-03-20 01:02:04       22 阅读
  5. CSS3DObject 分子公式demo 实现

    2024-03-20 01:02:04       21 阅读
  6. 一文彻底弄懂MySQL的字符集和排序规则

    2024-03-20 01:02:04       20 阅读
  7. python的封装应用

    2024-03-20 01:02:04       22 阅读