[Leetcode] 每日两题 13 860 -day95

剑指 Offer 13. 机器人的运动范围

BFS

首先将起点加入队列 ,其次四个方向依次判断 若改位置在棋盘 且之前没被访问,且满足k的条件 那么将其加入队列

最后入队的格子数目

class Solution:
    def movingCount(self, m: int, n: int, k: int) -> int:

        lis =[(0,0)]
        res = 1
        mov = [(1,0),(0,1),(-1,0),(0,-1)]
        rdict = defaultdict(int)
        rdict[(0,0)] +=1
        while lis:
            i,j = lis.pop(0)
            for  x,y in mov:
                newi,newj =i+x,j+y       
                if 0 <= newi <m and 0<= newj<n  and not rdict[(newi,newj)]:
                    if newi%10 +newj%10 +newi//10 +newj//10 <=k:
                        lis.append((newi,newj))
                        rdict[(newi,newj)] +=1
                        res +=1
        return res 
860. 柠檬水找零

贪心

记录当前的 10元和5元张数,若碰见20元顾客 优先找10元+5元 其次找三张5元 ,对于10元顾客直接找5元 若找零后张数为负 则返回False ,否则返回True

class Solution:
    def lemonadeChange(self, bills: List[int]) -> bool:
        num = 0
        ano = 0
        for i in bills:
            if i == 5 : 
                num += 1
            elif i ==10:
                num -= 1 
                ano +=1
            else :
                if ano>0:
                    ano-=1
                    num -=1
                else:
                    num -= 3
            if num<0 or ano <0:
                return False
        return True
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值