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

Posted oldby

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-面试题13-机器人的运动范围相关的知识,希望对你有一定的参考价值。

 题目描述:

技术图片

 

 方法一: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-机器人的运动范围的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

LeetCode(剑指 Offer)- 13. 机器人的运动范围

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