leetcode 212 單詞搜尋II

2021-08-20 10:40:42 字數 1395 閱讀 2160

題目:

我的思路:使用回溯,重要是剪枝,這點可以讓程式不用花太多時間做無用功。

我的解答:

class

solution }}

for (int i = 0; i < position.size(); i++)

used = new

int[board.length][board[0].length];

}used[x][y] = 0;//已被使用}}

return finals;

}private

static

boolean move(int used, char board, int x, int y,string word,int

index)

if(word.length()==index)

//1是左,2是下,3是→,4是上

for(int i=1;i<=4;i++)else

if(y-1>=0)

used[x][y-1] = 1;

if(move(used,board,x,y-1,word,index+1))

used[x][y-1] = 0;

}else

}break;

case

2: if(x+1>=board.length)else

if(x+1

if(used[x+1][y]==1)

if(word.charat(index)==board[x+1][y])

used[x+1][y] = 0;

}else

}break;

case

3: if(y+1>=board[0].length)else

used[x][y+1] = 1;

if(move(used,board,x,y+1,word,index+1))

used[x][y+1] = 0;

}}break;

case

4: if(x-1

<0)else

used[x-1][y] = 1;

if(move(used,board,x-1,y,word,index+1));

used[x-1][y] = 0;

}}break;}}

return

false;}}

這種型別的題目,我一眼看到就用了回溯法,可能剪枝不夠好吧,或者也許有更好的解法,導致解這一題花了952ms,挺長時間的。如果有更好的解法,還請大神不嗇教誨。

LeetCode212 單詞搜尋 II

題目描述 給定乙個二維網格 board 和乙個字典中的單詞列表 words,找出所有同時在二維網格和字典 現的單詞。單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中 相鄰 單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母在乙個單詞中不允許被重複使用。示例 輸入 words oat...

LeetCode212 單詞搜尋 II

這題是leetcode79.單詞搜尋的高階版,第79題是在二維的char陣列裡搜尋單個單詞,這題需要在二維char陣列裡搜尋一組單詞。理論上只需要對遍歷單詞陣列,逐個套用79的dfs方法即可,不過這題題目要求了需要用trie樹做優化。所以,我們最開始可以把單詞列表裡的所有單詞都插入到乙個trie樹中...

212 單詞搜尋 II

給定乙個二維網格 board 和乙個字典中的單詞列表 words,找出所有同時在二維網格和字典 現的單詞。單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中 相鄰 單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母在乙個單詞中不允許被重複使用。示例 輸入 words oath pea...