劍指 Offer 12 矩陣中的路徑

2022-06-30 15:42:09 字數 795 閱讀 9676

思路:

1. 矩陣搜尋,沒有規定起始位置與終止位置的時間複雜度是  o(row*col*3^k)因為要遍歷每乙個位置作為起始節點,由於不能訪問visited,所以每一步都只有3個選擇,然後最差情況走完k-1步發現不匹配

2. visited細節

1)visited 用set,而不新建乙個borad或在原board上修改,只要使用 (r,c) in set 判斷只需要o(1)

2)visited是新增座標,而不是board[r][c]的值,因為visited是用來實現不走回頭路

3)   我們是在每一步dfs開頭新增當前座標進 visited,而不是新增下一步的

3. 遞迴細節:

1) 每次dfs開頭的判斷返回值都是 判斷遞迴到最底層後的返回值,如

a.返回葉子節點的空節點 return none 

b.返回乙個空的列表

c.返回true or false

2)   底層的dfs還需要有變數去接受,這樣才能傳回外層函式

a.  root.left = dfs()   root.right = dfs()

b.  reslist = dfs() + [curval]

c.  if dfs() : return true

3)   通過這樣的方式,遞迴結果才一層一層的傳遞到外層函式

a. 獲得了一二叉樹

b. 獲得了乙個列表

c. 得到了true or flase

劍指offer12 矩陣中的路徑

設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某個字串所有字元的路徑。路徑可以從矩陣中的任意一格開始,每一步可以在矩陣中向左 右 上 下移動一格。如果一條路徑經過了矩陣的某一格,那麼該路徑不能再次進入該格仔。利用回溯法的思想,除矩陣邊界上的格仔外,其它格仔都有四個相鄰的格仔,當矩陣中座標為 ro...

矩陣中的路徑(劍指offer 12)

設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某個字串所有字元的路徑,路徑可以從矩陣中任意一格開始,每一步可以在矩陣中向左 右 上 下各移動一格,如果一條路徑經過了矩陣中的某一格,那麼該路徑不能再次進入該格仔。例下 3 x 4的矩陣中包含一條字串 bfce 的路徑,但是矩陣中不包含 abfb 路...

劍指offer 12 矩陣中的路徑

判斷在乙個矩陣中是否存在一條包含某字串所有字元的路徑。路徑可以從矩陣中的任意乙個格仔開始,每一步可以在矩陣中向上下左右移動乙個格仔。如果一條路徑經過了矩陣中的某乙個格仔,則該路徑不能再進入該格仔。public class solution,private int rows private int c...