leetcode題解記錄-752開啟轉盤鎖(python3)
題目
關鍵詞
廣度優先遍歷(BFS)
程式碼記錄
BFS
class Solution:
def __init__(self):
import math
self.min_route=math.inf
self.seen={}
def openLock(self, deadends: List[str], target: str) -> int:
if '0000' in deadends:
return -1
import math
def next_step(cur_step:str)->List[str]:
res=[]
for i in range(4):
steps=[cur_step[:i]+str((int(cur_step[i])-1)%10)+cur_step[i+1:],cur_step[:i]+str((int(cur_step[i])+1)%10)+cur_step[i+1:]]
for step in steps:
if step not in deadends and step not in self.seen:
self.seen[step]=0
res.append(step)
return res
def bfs(cur_queue:List[str],cur_route:int):
to_search=[]
for i in range(len(cur_queue)):
cur_step=cur_queue[i]
if cur_step==target:
self.min_route = min(self.min_route,cur_route+1)
return
next_steps=next_step(cur_step)
to_search.extend(next_steps)
if to_search:
bfs(to_search,cur_route+1)
self.seen['0000']=0
bfs(['0000'],-1)
return -1 if self.min_route==math.inf else self.min_route
相關文章
- Leetcode 記錄 不會解的題LeetCode
- Leetcode日常記錄:NO.226 反轉二叉樹題解LeetCode二叉樹
- LeetCode解題記錄(雙指標專題)LeetCode指標
- leetCode解題記錄1 - 兩數之和LeetCode
- LeetCode刷題記錄與題解(C++版本)LeetCodeC++
- LeetCode刷題記錄LeetCode
- leetcode 解題 2.兩數相加-python3 題解LeetCodePython
- leetcode刷題記錄 661~LeetCode
- LeetCode解題記錄(貪心演算法)(二)LeetCode演算法
- LeetCode解題記錄(貪心演算法)(一)LeetCode演算法
- LeetCode刷題記錄——day5LeetCode
- LeetCode刷題記錄——day4LeetCode
- LeetCode刷題記錄——day3LeetCode
- LeetCode刷題記錄——day2LeetCode
- LeetCode刷題記錄——day1LeetCode
- LeetCode刷題(javascript,python3)LeetCodeJavaScriptPython
- 轉盤小程式首頁運營覆盤記錄
- 2024-03-08 leetcode寫題記錄LeetCode
- 2024-03-15 leetcode寫題記錄LeetCode
- 2024-03-14 leetcode寫題記錄LeetCode
- LeetCode-劍指Offer刷題記錄LeetCode
- leetcode每日一題刷題記錄(10.26-10.30)LeetCode每日一題
- leetcode刷題記錄1041-1050 python版LeetCodePython
- KeyboardCleanTool - Mac鍵盤鎖定/開啟小工具Mac
- LeetCode - 解題筆記 - 12 - Integer to RomanLeetCode筆記
- LeetCode - 解題筆記 - 8 - Palindrome NumberLeetCode筆記
- LeetCode - 解題筆記 - 7 - Reverse IntegerLeetCode筆記
- 【刷題日記】leetcode-493 翻轉對LeetCode
- leetcode 解題 1.兩數之和-python3 兩種解法 @ 官方LeetCodePython
- LeetCode 刷題記錄(16、17、18)—Java語言LeetCodeJava
- Python leetcode tree記錄PythonLeetCode
- 刷題記錄:劍指offer+遇到的筆試題+LeetCode筆試LeetCode
- atc轉換過程問題記錄
- 詳解 MySql InnoDB 中的三種行鎖(記錄鎖、間隙鎖與臨鍵鎖)MySql
- leetcode刷題記錄:演算法(六)BFS&DFSLeetCode演算法
- LeetCode每日一題: 學生出勤記錄 I(No.551)LeetCode每日一題
- 記錄一次測開面試題記錄面試題
- LeetCode - 解題筆記 - 10- Regular Expression MatchingLeetCode筆記Express