題目要求: 給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。思路如下:單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中「相鄰」單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。
示例: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做題,總結規律 如果使用了全域性變數,需要在函式入口處初始化一下,否則會有問題。自驗證能過,提交不能過 二叉樹查詢二叉樹的中序遍歷是公升序的。數字奇偶性,奇數只能被...