算法训练营Day35(贪心4)

发布时间:2024年01月20日

860.柠檬水找零?力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

提醒

本题看上好像挺难,其实挺简单的,大家先尝试自己做一做。

class Solution:
    def lemonadeChange(self, bills: List[int]) -> bool:
        five = 0
        ten = 0
        twenty = 0
        for bill in bills:
            # 情况一:收到5美元
            if bill == 5:
                five += 1
            # 情况二:收到10美元
            if bill == 10:
                if five <= 0:
                    return False
                ten += 1
                five -= 1
            # 情况三:收到20美元
            if bill == 20:
                # 先尝试使用10美元和5美元找零
                if five > 0 and ten > 0:
                    five -= 1
                    ten -= 1
                    #twenty += 1
                # 如果无法使用10美元找零,则尝试使用三张5美元找零
                elif five >= 3:
                    five -= 3
                    #twenty += 1
                else:
                    return False
        return True

406.根据身高重建队列?力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

提醒

本题有点难度,和分发糖果类似,不要两头兼顾,处理好一边再处理另一边。?

一刷看不懂代码,二刷再深入琢磨

class Solution:
    def reconstructQueue(self, people: List[List[int]]) -> List[List[int]]:
        # 先按照h维度的身高顺序从高到低排序。确定第一个维度
        # lambda返回的是一个元组:当-x[0](维度h)相同时,再根据x[1](维度k)从小到大排序
        people.sort(key=lambda x: (-x[0], x[1]))
        que = []
	# 根据每个元素的第二个维度k,贪心算法,进行插入
        # people已经排序过了:同一高度时k值小的排前面。
        for p in people:
            que.insert(p[1], p)
        return que

452.?用最少数量的箭引爆气球??力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

提醒

本题是一道?重叠区间的题目,明天三道题目,都是重叠区间。?

class Solution:
    def findMinArrowShots(self, points: List[List[int]]) -> int:
        if len(points) == 0: return 0
        points.sort(key=lambda x: x[0])
        result = 1
        for i in range(1, len(points)):
            if points[i][0] > points[i - 1][1]: # 气球i和气球i-1不挨着,注意这里不是>=
                result += 1     
            else:
                points[i][1] = min(points[i - 1][1], points[i][1]) # 更新重叠气球最小右边界
        return result

文章来源:https://blog.csdn.net/2301_79788081/article/details/135684021
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。