代码随想录day35|860. 柠檬水找零406. 根据身高重建队列452. 用最少数量的箭引爆气球

860. 柠檬水找零

class Solution:
    def lemonadeChange(self, bills: List[int]) -> bool:
        five = 0
        ten = 0
        for i in bills:
            if i == 5:
                five +=1
            elif i == 10:
                if five>=1:
                    ten+=1
                    five-=1
                else:
                    return False
            else:
                if ten>=1 and five>=1:
                    ten-=1
                    five-=1
                elif five>=3:
                    five -= 3
                else:
                    return False
        return True

406. 根据身高重建队列

这道题类似分糖果那道题,分糖果要考虑左边和右边,这道题要考虑身高和排序,也是分成两部分来看,先看身高,这里有个技巧是从大到小排序,会方便很多,然后再考虑排序的事。另外要学习排序函数sorted()

class Solution:
    def reconstructQueue(self, people: List[List[int]]) -> List[List[int]]:
        result = []
        people=sorted(people,key = lambda x : (-x[0],x[1]))
        for i in people:
            result.insert(i[1],i)
        return result

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

class Solution:
    def findMinArrowShots(self, points: List[List[int]]) -> int:
        points = sorted(points,key=lambda x:x[0])
        result = 1
        for i in range(1,len(points)):
            if points[i][0] > points[i-1][1]:
                result +=1
            else:
                points[i][1] = min(points[i][1],points[i-1][1])
        return result

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值