题目:
解析:
- 广度遍历
代码:
import queue
class Solution:
def numSquares(self, n: int) -> int:
direction = set([i**2 for i in range(1, int(n**0.5)+1)])
if n in direction:
return 1
visited = set([])
q = queue.Queue()
q.put(n)
count = 0
while not q.empty():
count += 1
q_len = q.qsize()
for i in range(q_len):
front = q.get()
for j in direction:
res = front - j
if res in direction:
return count + 1
if res > 0 and res not in visited:
q.put(res)
visited.add(res)
return count