Leecode刷題筆記 79 單詞搜尋

2021-10-04 13:23:37 字數 1274 閱讀 8323

題目要求: 給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。

單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中「相鄰」單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。

示例:board = [ [『a』,『b』,『c』,『e』], [『s』,『f』,『c』,『s』],

[『a』,『d』,『e』,『e』] ]

給定 word = 「abcced」, 返回 true 給定 word = 「see」, 返回 true 給定 word = 「abcb」,

返回 false

思路如下:

1、判斷單詞是否包含在網路中,可以考慮使用遍歷+遞迴回溯的方法,通過遍歷字元,判斷是否是對應的字元,如果是則進行遞迴,不是則回溯。

2、要求不允許重複使用,因為定義乙個二維布林陣列標誌每個位置上的字元是否被遍歷過。

3、for迴圈先找到第乙個字元所在位置,然後進行遞迴呼叫。

class

solution}}

}return

false;}

public

boolean

dfs_helper

(char

board,

boolean

visited,string word,

int index,

int x,

int y)

//定義dx、dy表示當前字元上下左右四個字元的座標分量

int[

]dx=

;int

dy=;//先假定當前字元已經被遍歷

visited[x]

[y]=

true

;//判斷上下左右四個字元中是否有符合條件的字元

for(

int i=

0;i)//如果當前字元與預期字元不符

if(board[nx]

[ny]

!=word.

charat

(index)

)//如果當前字元與預期字元相符,則接著遞迴if(

dfs_helper

(board,visited,word,index+

1,nx,ny))}

//如果遍歷完四個方向均沒有符合要求的字元,則把當前座標設定為未被遍歷過

visited[x]

[y]=

false

;return

false;}

}

LeeCode刷題筆記

本來想在leecode題目頁面上做注釋的,結果沒找到位置,只好來這裡了 字串部分 14.最長公共字首 編寫乙個函式來查詢字串陣列中的最長公共字首。示例 1 輸入 flower flow flight 輸出 fl 自己做法 取第乙個string first,然後比較後面每個string的第 i 個元素...

LeeCode刷題筆記 1

1.twosum 從今天開始好好刷題吧 此題用雜湊表即可求解,依題意不必在雜湊表建好之後進行尋找,而是在建表的同時進行尋找 這裡使用了乙個庫 注意即使題目說明了一定會有解,但是函式中還是要在無解的情況下返回乙個值 我的測試 如下 include include includeusing namesp...

LeeCode 刷題總結

嘗試思考10 20分鐘,如果想不到方案就去看答案。補充知識點。easy階段每天12道,medium8道,hard2 4道。優先按照tag做題,總結規律 如果使用了全域性變數,需要在函式入口處初始化一下,否則會有問題。自驗證能過,提交不能過 二叉樹查詢二叉樹的中序遍歷是公升序的。數字奇偶性,奇數只能被...