二維陣列查詢單詞

2021-10-09 10:13:22 字數 1788 閱讀 9056

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

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

示例:

board =[[

'a',

'b',

'c',

'e'],[

's',

'f',

'c',

's'],[

'a',

'd',

'e',

'e']

]給定 word =

"abcced"

, 返回 true

給定 word =

"see"

, 返回 true

給定 word =

"abcb"

, 返回 false

board 和 word 中只包含大寫和小寫英文本母。

1<= board.length <=

2001

<= board[i]

.length <=

2001

<= word.length <=10^

3

解題思路:

首先在陣列中找到單詞的開頭字元,

判斷該字元的上下左右位是否有下一位的字元

基於其中一種選擇,判斷下一位字元的上下左右位是否有下下位字元。。。

故要用到遞迴

var

exist

=function

(board, word)

for(

var i =

0;i < cols;i++)}

}}function

canfind

(col,row,i)

if(row <

0||row >= rows || col <

0|| col >= cols || tag[col]

[row]==1

)if(i >

0&& board[col]

[row]

!= word.

charat

(i))

tag[col]

[row]=1

;//標記該位置元素被訪問過

var canfindrest =

canfind

(col +

1, row ,i +1)

||canfind

(col -

1, row ,i +1)

||canfind

(col, row +

1,i +1)

||canfind

(col, row -

1,i +1)

;if(!canfindrest)

return canfindrest;

//取消標記

}return

false;}

;var board =[[

'a',

'b',

'c',

'e'],[

's',

'f',

'c',

's'],[

'a',

'd',

'e',

'e']

]var word =

'ses'

;console.

log(

exist

(board,word)

)

二維陣列查詢

近日微博上看到乙個題目,二維陣列查詢 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。例如下面的二維陣列就是每行 每列都遞增排序。如果在這個陣列中查詢數字7,則返回true 如果查詢...

二維陣列查詢

天氣變化大,生病折騰了1個禮拜,寫篇部落格壓壓驚。題目源自於清明假期前夕舍友春招的筆試題,後來得知是劍指offer上的一道題,書上應該有解題思路啥的。題目重述 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,...

二維陣列查詢

題目描述 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請 完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。解題思路 按照一般搜尋二維陣列的方法,從左到右,從上到下,比較難根據這個陣列的特點進行快速搜尋。可以從 右到左,從上到下,...