美文网首页
经典算法题:分发糖果

经典算法题:分发糖果

作者: 深圳都这么冷 | 来源:发表于2022-05-08 14:56 被阅读0次

135. 分发糖果

  • 难度:困难

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

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

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

示例 1:

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

输入:ratings = [1,2,2]
输出:4
解释:你可以分别给第一个、第二个、第三个孩子分发 1、2、1 颗糖果。
第三个孩子只得到 1 颗糖果,这满足题面中的两个条件。

提示:

n == ratings.length
1 <= n <= 2 * 104
0 <= ratings[i] <= 2 * 104

解题思路:

  • 万事不决先排序,然后按照分数由低向高分发
    第一步:按照分数排序,并且记住原始下标
    第二步:依次分发糖果,分发的时候,看两侧是不是分数比她低,如果是,保证糖果比它多即可

  • 其实这题根本算不得困难

代码

class Solution:
    def candy(self, ratings: List[int]) -> int:
        # 按照分数由低向高发
        # 分发的时候看两侧是不是分数比他低,然后保证糖果至少是邻居的数量+1
        dist_order = sorted([(score, idx) for idx, score in enumerate(ratings)])
        candies = [0 for _ in ratings]
        for score, idx in dist_order:
            need = 0
            if idx-1 >= 0 and ratings[idx-1] < score:
                need = max(need, candies[idx-1])
            if idx+1 < len(ratings) and ratings[idx+1] < score:
                need = max(need, candies[idx+1])
            candies[idx] = need+1
        return sum(candies)

相关文章

  • 经典算法题:分发糖果

    135. 分发糖果[https://leetcode.cn/problems/candy/] 难度:困难 n 个孩...

  • 刷题

    深度优先搜索,小蜜蜂采蜜最短路径 LeetCode经典题 1. 贪心算法 455 分发糖果376 摇摆序列402 ...

  • 经典算法题

    涉及:二叉树,遍历,深度广度遍历,快排,冒泡,单链表 二叉树: 1.给你一个二叉树,要你打印输出所有路径。http...

  • PHP经典算法题

    PHP学习之路---算法题 1.使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象...

  • 贪心--分发糖果

    目录[https://www.jianshu.com/p/85e18c21317a] 题号[https://lee...

  • 五大常用算法——贪心算法

    汇总几个常见的贪心算法实现的问题 概述 IPO(最大投资收益) 金砖最小分割代价 会议室相关问题 分发糖果 柠檬水...

  • 写给iOS开发的跳一跳秘籍

    开篇前说一下上周和这周都没更新算法题。因为这两周的算法题难度级别都是'Hard',经典题N皇后问题,网上太多太多了...

  • leetcode第135题:分发糖果 [困难/否]

    题目描述 考点 贪心算法 指针 解题思路 两次遍历解决问题;这里的贪心策略即为,在每一次遍历中,只考虑并更新相邻一...

  • 135. 分发糖果(每日一题)

    lzyprime 博客 (github)[https://lzyprime.github.io] 创建时间:2...

  • [刷题防痴呆] 0135 - 分发糖果 (Candy)

    题目地址 https://leetcode.com/problems/candy/description/[htt...

网友评论

      本文标题:经典算法题:分发糖果

      本文链接:https://www.haomeiwen.com/subject/fwdqurtx.html