開啟轉盤鎖(LeetCode 752)

2021-10-24 07:24:41 字數 1124 閱讀 7032

你有乙個帶有四個圓形撥輪的轉盤鎖。每個撥輪都有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包含了一組死...