你有乙個帶有四個圓形撥輪的轉盤鎖。每個撥輪都有10個數字: 『0』, 『1』, 『2』, 『3』, 『4』, 『5』, 『6』, 『7』, 『8』, 『9』 。每個撥輪可以自由旋**例如把 『9』 變為 『0』,『0』 變為 『9』 。每次旋轉都只能旋轉乙個撥輪的一位數字。
鎖的初始數字為 『0000』 ,乙個代表四個撥輪的數字的字串。
列表 deadends 包含了一組死亡數字,一旦撥輪的數字和列表裡的任何乙個元素相同,這個鎖將會被永久鎖定,無法再被旋轉。
字串 target 代表可以解鎖的數字,你需要給出最小的旋轉次數,如果無論如何不能解鎖,返回 -1。
示例 1:
輸入:deadends =
["0201","0101","0102","1212","2002"
], target =
"0202"
輸出:6
解釋:可能的移動序列為 "0000" ->
"1000" ->
"1100" ->
"1200" ->
"1201" ->
"1202" ->
"0202"。
注意 "0000" ->
"0001" ->
"0002" ->
"0102" ->
"0202" 這樣的序列是不能解鎖的,
因為當撥動到 "0102" 時這個鎖就會被鎖定。
遍歷下一層
沒有找到,返回-1
class
solution
string downstr =
downpwd
(str, j);if
(!visit.
contains
(downstr))}
} depth++;}
return-1
;}// 向上撥動數字
public string uppwd
(string pwd,
int j)
// 向下撥動數字
public string downpwd
(string pwd,
int j)
}
Leetcode 開啟轉盤鎖
原題 一道關於bfs的題目 先上 class solution object def openlock self,deadends,target 這裡轉為set類很有必要。deadends set deadends 先判斷是否是特殊情況。if 0000 in deadends or target i...
LeetCode 開啟轉盤鎖
q 你有乙個帶有四個圓形撥輪的轉盤鎖。每個撥輪都有10個數字 0 1 2 3 4 5 6 7 8 9 每個撥輪可以自由旋 例如把 9 變為 0 0 變為 9 每次旋轉都只能旋轉乙個撥輪的一位數字。鎖的初始數字為 0000 乙個代表四個撥輪的數字的字串。列表 deadends 包含了一組死亡數字,一旦...
LeetCode 開啟轉盤鎖 C
題目鏈結 題目描述 你有乙個帶有四個圓形撥輪的轉盤鎖。每個撥輪都有10個數字 0 1 2 3 4 5 6 7 8 9 每個撥輪可以自由旋 例如把 9 變為 0 0 變為 9 每次旋轉都只能旋轉乙個撥輪的一位數字。鎖的初始數字為 0000 乙個代表四個撥輪的數字的字串。列表deadends包含了一組死...