首页 > 其他 > 详细

leetcode-面试题13-机器人的运动范围

时间:2020-04-09 00:11:15      阅读:72      评论:0      收藏:0      [点我收藏+]

 题目描述:

技术分享图片

 

 方法一:dfs/bfs

class Solution:
    def movingCount(self, m: int, n: int, k: int) -> int:
        def digitsum(n):
            ans = 0
            while n:
                ans += n %10
                n//=10
            return ans
        from queue import Queue
        q = Queue()
        q.put((0,0))
        s = set()
        while not q.empty():
            x,y = q.get()
            if (x,y) not in s and 0 <=x <m and 0<=y<n and digitsum(x)+digitsum(y) <=k:
                s.add((x,y))
                for nx,ny in [(x+1,y),(x,y+1)]:
                    q.put((nx,ny))
        return len(s)

方法二:递推

class Solution:
    def movingCount(self, m: int, n: int, k: int) -> int:
        def digitsum(n):
            ans = 0
            while n:
                ans += n %10
                n//=10
            return ans
        vis = set([(0,0)])
        for i in range(m):
            for j in range(n):
                if ((i-1,j) in vis or (i,j-1) in vis) and digitsum(i) + digitsum(j) <= k:
                    vis.add((i,j))
        return len(vis)

 

leetcode-面试题13-机器人的运动范围

原文:https://www.cnblogs.com/oldby/p/12663843.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!