题目:
解析:
- 广度遍历,求最短路径问题
代码:
from queue import Queue
class Solution:
def openLock(self, deadends: List[str], target: str) -> int:
if "0000" in deadends:
return -1
dead = set(deadends)
q = Queue()
q.put("0000")
count = 0
while not q.empty():
count += 1
n_length = q.qsize()
for k in range(n_length):
front = q.get()
for i in range(4):
for x in (-1, 1):
temp = front[:i] + str((int(front[i]) + x) % 10) + front[i+1:]
if temp == target:
return count
if temp not in dead:
q.put(temp)
dead.add(temp)
return -1