79 單詞搜尋(JS實現)

2021-10-07 04:48:24 字數 1013 閱讀 3214

這道題的思路主要還是考察深度優先遍歷 + 回溯, 主要思路就是遍歷二維陣列每個元素,當發現元素和目標單詞的首字母相同時,就進入遞迴,沿該元素的四個方向進行依次查詢,用乙個雜湊表標記已經訪問過的位置,在遞迴過程中,若找到則返回true,若未找到,則遞迴回來時,要重置雜湊表狀態

/**

* @param board

* @param word

* @return

*/var

exist

=function

(board, word)

;for

(let i=

0; i}return

false

;function

search

(i, j, nextindex)

;let key =`$

-$`;

//陣列越界、已經訪問過、對應字母不相等時直接返回false

if(i <

0|| j <

0|| i >= m || j >=n || map[key]

|| board[i]

[j]!== word[nextindex]

) map[key]

=true

;let success =

search

(i+1

, j, nextindex +1)

//沿4個方向尋找

||search

(i-1

, j, nextindex +1)

||search

(i, j+

1, nextindex +1)

||search

(i, j-

1, nextindex +1)

; map[key]

= success;

//失敗時要重置位置狀態

return success;}}

;

79 單詞搜尋

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

79 單詞搜尋

不允許重複使用字母 seen 0for i in range n for j in range m for i in range m for j in range n if self.search board,word,0,i,j,seen return true return false word...

79 單詞搜尋

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