代码随想录算法训练营第三十五天| LeetCode860.柠檬水找零 、LeetCode406.根据身高重建队列、LeetCode452. 用最少数量的箭引爆气球

860.柠檬水找零

题目描述: 860.柠檬水找零.

解法

贪心
class Solution(object):
    def lemonadeChange(self, bills):
        five,ten = 0, 0
        for bill in bills:
            if bill == 5:
                five += 1
            if bill == 10:
                five -= 1
                ten += 1
            if bill == 20:
                if ten >=1:
                    ten -= 1
                    five -= 1
                else:
                    five -= 3
            if five < 0:
                return False
        return True

没什么难度,优先消耗10块的

406.根据身高重建队列

题目描述: 406.根据身高重建队列.

解法

贪心
class Solution(object):
    def reconstructQueue(self, people):
        people.sort(key=lambda x:(-x[0],x[1]))
        que = []
        for p in people:
            que.insert(p[1],p)
        return que

整体思路真的很难,先用身高排序,然后k值小的在前面,最后直接从大到小满足k值的要求即可。

452. 用最少数量的箭引爆气球

题目描述: 452. 用最少数量的箭引爆气球.

解法

贪心
class Solution(object):
    def findMinArrowShots(self, points):
        points.sort(key=lambda x: x[0])
        count = 1
        ls,rs = points[0]
        for i in range(1,len(points)):
            if points[i][0] <= rs:
                ls, rs = points[i][0],min(rs,points[i][1])
            else:
                count += 1
                ls,rs = points[i]
        return count

基本思路想到了,但是不需要单独设置一个用于存储交集的列表,使用两个指针来维护最后一个交集的区间即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值