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