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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 126 单词接龙 II

發(fā)布時間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 126 单词接龙 II 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
  • 題目描述
  • 給定兩個單詞(beginWord 和 endWord)和一個字典 wordList,找出所有從 beginWord 到 endWord 的最短轉(zhuǎn)換序列。轉(zhuǎn)換需遵循如下規(guī)則:每次轉(zhuǎn)換只能改變一個字母。 轉(zhuǎn)換后得到的單詞必須是字典中的單詞。 說明:如果不存在這樣的轉(zhuǎn)換序列,返回一個空列表。 所有單詞具有相同的長度。 所有單詞只由小寫字母組成。 字典中不存在重復(fù)的單詞。 你可以假設(shè) beginWord 和 endWord 是非空的,且二者不相同。
  • 題解
  • 廣度優(yōu)先搜索
  • 代碼
  • class Solution { public:void dfs(vector<vector<string>> &res,vector<string> tmp,unordered_map<string,vector<string>>& next,string beginWord, string endWord){if (beginWord==endWord){res.push_back(tmp);return ;}for (int i=0;i<next[beginWord].size();i++){tmp.push_back(next[beginWord][i]);dfs(res,tmp,next,next[beginWord][i],endWord);tmp.pop_back();}}vector<vector<string>> findLadders(string beginWord, string endWord, vector<string>& wordList) {int length=wordList.size();if (!length) return vector<vector<string>>{};unordered_map<string,bool> visited;unordered_set<string> myset;int n=beginWord.size();for (int i=0;i<wordList.size();i++) {visited[wordList[i]]=false;myset.insert(wordList[i]);}queue<string> que;que.push(beginWord);visited[beginWord]=true;unordered_map<string,vector<string>> next;unordered_map<string,bool> inque;inque[beginWord]=true;vector<string> vec;bool f=false; // 表示當(dāng)前最近的路線是否已經(jīng)找到while (!que.empty()){int cnt=que.size();while (cnt--){string t=que.front(),k;que.pop();vec.push_back(t);for (int i=0;i<n;i++){k=t;for (int j=0;j<26;j++){k[i]=j+'a';if (myset.find(k)!=myset.end()){if (k==endWord){next[t].push_back(k);f=true;}else if (!visited[k]){if (!inque[k]) {que.push(k);inque[k]=true;}next[t].push_back(k);}}}}}for (int i=0;i<vec.size();i++){for (int j=0;j<next[vec[i]].size();j++) visited[next[vec[i]][j]]=true;}vec.clear();if (f) break;}vector<vector<string>> res;if (f){vector<string> tmp={beginWord};dfs(res,tmp,next,beginWord,endWord);}return res;} };

    總結(jié)

    以上是生活随笔為你收集整理的LeetCode 126 单词接龙 II的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。