給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。
單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中 「相鄰」 單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。
示例:
board =
[ ['a','b','c','e'],
['s','f','c','s'],
['a','d','e','e']
]給定 word = "abcced", 返回 true.
給定 word = "see", 返回 true.
給定 word = "abcb", 返回 false.
首先,需要乙個輔助方法
boolean backtrack (int i, int j, int index, char board, string word)
其中該回溯演算法的輔助方法流程如下:
最後,遍歷整個二維面板,對每乙個匹配到word.charat(0)
的元素進行一次搜尋,返回結果。
public boolean exist (char board, string word) }}
}return false;
}private boolean backtrack (int i, int j, int index, char board, string word)
這一題的搜尋思想和深度優先搜尋(dfs)有點類似,回溯演算法體現在,搜尋完成後,要把當前二維面板的元素置換回來,方便下次搜尋中使用。 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 返回 ...