LeetCode79 單詞搜尋

2022-06-07 16:06:12 字數 1420 閱讀 7467

☆☆☆☆思路:二維平面上的回溯法。

先將問題轉化為樹形問題,每乙個點都有四個方向可以走,若規定順時針即為「上->右->下->左」。

注意:關於標記某個格仔是否被訪問過有兩個思路,一是設定visited布林陣列,二是直接修改輸入資料,回溯時再改回來。

在具體面試中,需要詢問面試官是否可以修改輸入資料!

**1(設定vis陣列,耗時:6ms):

class

solution }}

return

false

; }

//從board[x][y]開始,尋找word[index...word.size())

private

boolean dfs(char board, int x, int y, boolean visited, int

index, string word)

visited[x][y] = true

;

//順時針方向搜尋

boolean res = dfs(board, x - 1, y, visited,index + 1, word)

|| dfs(board, x, y + 1, visited,index + 1, word)

|| dfs(board, x + 1, y, visited,index + 1, word)

|| dfs(board, x, y - 1, visited,index + 1, word);

visited[x][y] = false

;

return

res;}}

**2(修改輸入資料,耗時:6ms)

class

solution }}

return

false

; }

private

boolean dfs(char board, int x, int y, int

index, string word)

char temp =board[x][y];

board[x][y] = '#';

boolean res = dfs(board, x - 1, y, index + 1, word)

|| dfs(board, x, y + 1, index + 1, word)

|| dfs(board, x + 1, y, index + 1, word)

|| dfs(board, x, y - 1, index + 1, word);

board[x][y] =temp;

return

res;}}

leetcode 79 單詞搜尋

本題算是乙個組合類的題,也類似於深度優先搜尋演算法 設定乙個與字母構成的陣列大小相同的陣列,用來儲存某個位置的字母是否被訪問過,標註為1表示已被訪問過,避免重複 每次要看i,j位置上下左右的字母是否等於單詞第t個位置的字母 進行深度優先搜尋 bool find std vector board,st...

leetcode 79 單詞搜尋

給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中 相鄰 單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。示例 board a b c e s f c s a d e e 給定 word abcced 返回t...

Leetcode 79 單詞搜尋

給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中 相鄰 單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。示例 board a b c e s f c s a d e e 給定 word abcced 返回 ...