Leetcode 矩陣中的路徑

2021-10-03 21:25:12 字數 2597 閱讀 3609

leetcode

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

輸入:board = [[「a」,「b」,「c」,「e」],[「s」,「f」,「c」,「s」],[「a」,「d」,「e」,「e」]], word = 「abcced」

輸出:true

考慮用深度優先搜尋dfs

遞迴終止條件:座標超出邊界值或者當前值與所求字串值不符合或者當前座標已經訪問過

對於已經搜尋過的座標,如果想不重複,可以將其修改為特殊符號,使之與字串無法匹配

遞迴方式:對當前座標向左向右向上向下進行搜尋

class

solution

:def

exist

(self, board: list[list[

str]

], word:

str)

->

bool:if

not word:

return

true

res =

path =

"" visited =

set(

)def

dfs(i,j,k)

:if i>

len(board)-1

or j>

len(board[0]

)-1or i<

0or j<

0or word[k]

!=board[i]

[j]:

return

false

if k==

len(word)-1

:return

true

visited.add(

(i,j)

) k+=

1 tmp , board[i]

[j]= board[i]

[j],

'/' res = dfs(i,j+

1,k)

or dfs(i,j-

1,k)

or dfs(i-

1,j,k)

or dfs(i+

1,j,k)

board[i]

[j]= tmp

return res

for i in

range

(len

(board)):

for j in

range

(len

(board[0]

)):if dfs(i,j,0)

:return

true

return

false

class

solution

:def

exist

(self, board: list[list[

str]

], word:

str)

->

bool:if

not word:

return

true

visited =[[

0]*len

(board[0]

)for _ in

range

(len

(board))]

defhelper

(i,j,visited,word):if

not word:

return

true

res =

false

if i>=

0and i<

len(board)

and j>=

0and j<

len(board[0]

)and board[i]

[j]==word[0]

and visited[i]

[j]==0:

visited[i]

[j]=

1 res = helper(i+

1,j,visited,word[1:

])or helper(i-

1,j,visited,word[1:

])or helper(i,j+

1,visited,word[1:

])or helper(i,j-

1,visited,word[1:

])ifnot res:

visited[i]

[j]=

0return res

for i in

range

(len

(board)):

for j in

range

(len

(board[0]

)):if helper(i,j,visited,word)

:return

true

return

false

LeetCode 回溯 矩陣中的路徑

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

刷leetcode 10 矩陣中的路徑

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

矩陣中的路徑

請設計乙個函式,用來判斷在乙個矩陣中是否存在一條包含某字串所有字元的路徑。路徑可以從矩陣中的任意乙個格仔開始,每一步可以在矩陣中向左,向右,向上,向下移動乙個格仔。如果一條路徑經過了矩陣中的某乙個格仔,則該路徑不能再進入該格仔。例如 3 4 矩陣 a b c e s f c s a d e e 中包...