日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

单词搜索—leetcode79

發布時間:2024/4/18 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单词搜索—leetcode79 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

示例:

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 <= 200
1 <= board[i].length <= 200
1 <= word.length <= 10^3

?

思路:回溯法,?一道搜索的題目,有點類似走迷宮,只不過按照給定單詞字母順序來尋找,遍歷board中每一個元素,判斷與word中的第一個字母是否相同,如果相同則在當前位置上去搜索上下左右相鄰的單元格的元素是否和當前字母的下一個字母相同,不在搜索范圍內或者字母不同就返回false,當搜索的字母數等于word的長度時,也就表明在board找到了這個word。注意每次判斷一個字母要標記當前位置以搜索過,以防止字母重復利用。我選擇直接更改board元素,以便在后續的判斷中不會重復判斷此位置,在搜索結束后改回來就可以了。

class Solution { public:bool exist(vector<vector<char>>& board, string word) {int h = board.size();int w = board[0].size();for(int i=0;i<h;++i){for(int j=0;j<w;++j){if(core(board, word, 0, i, j, h, w)){return true;}}}return false;}bool core(vector<vector<char>>& board, string &word, int n, int x, int y, int h, int w){if(x < 0 || x > h-1 || y < 0 || y > w-1 || word[n] != board[x][y])return false;if(n == word.length()-1)return true;char temp = board[x][y];board[x][y] = 0;int flag = core(board, word, n+1, x+1, y, h, w)||core(board, word, n+1, x-1, y, h, w)||core(board, word, n+1, x, y+1, h, w)||core(board, word, n+1, x, y-1, h, w);board[x][y] = temp;return flag;} };

?

總結

以上是生活随笔為你收集整理的单词搜索—leetcode79的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。