国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

127. Word Ladder

2019-11-08 03:21:12
字體:
來源:轉載
供稿:網友

單向bfs 方法也是想到和寫了出來,就是沒有用find這個方法導致超時!!!用了iterator 其實就是bfs不斷判斷是否是那就ok了,數據結構的使用方法還是有點弱!

class Solution {public: void addnext(string s, queue<string>& qu, unordered_set<string>& WordList){ wordList.erase(s); for(int i = 0; i < s.length(); ++ i){ char temp = s[i]; for(int j = 0; j < 26; ++ j){ s[i] = 'a' + j; if(wordList.find(s) != wordList.end()){ qu.push(s); wordList.erase(s); } } s[i] = temp; } } int ladderLength(string beginWord, string endWord, unordered_set<string>& wordList) { wordList.insert(endWord); queue<string>qu; addnext(beginWord, qu, wordList); int sum = 2; while(!qu.empty()){ int n = qu.size(); for(int i = 1; i <= n; ++ i){ string t = qu.front(); qu.pop(); if(t == endWord) return sum; addnext(t, qu, wordList); } sum++; } return 0; }};

雙向bfs 雙向bfs,比單向更快,沒有用queue,用了unorder set一樣可以做,每次結束就裝換,開兩個,一頭一尾,這題十分考驗打碼能力,非思維能力,2刷值得繼續練習!

class Solution {public: int ladderLength(string beginWord, string endWord, unordered_set<string>& wordList) { unordered_set<string> head, tail, *phead, *ptail; head.insert(beginWord); tail.insert(endWord); int sum = 2; while(!head.empty() && !tail.empty()){ if(head.size() < tail.size()){ phead = &head; ptail = &tail; } else{ phead = &tail; ptail = &head; } unordered_set<string> temp; for(auto it = phead -> begin(); it != phead -> end(); it++){ string word = *it; wordList.erase(word); for(int i = 0; i < word.length(); ++ i){ char t = word[i]; for(int j = 0; j < 26; ++ j){ word[i] = 'a' + j; if(ptail -> find(word) != ptail -> end()) return sum; if(wordList.find(word) != wordList.end()){ temp.insert(word); wordList.erase(word); } } word[i] = t; } } sum++; swap(*phead, temp); } return 0; }};
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 方山县| 靖安县| 台东市| 长海县| 宝丰县| 子洲县| 宽城| 桂平市| 惠安县| 新泰市| 鹰潭市| 西华县| 夏津县| 寿宁县| 江都市| 隆尧县| 闵行区| 翁牛特旗| 拉萨市| 萍乡市| 治县。| 余姚市| 孟州市| 巴中市| 娄底市| 西华县| 塔河县| 渝北区| 金阳县| 黄梅县| 太湖县| 甘孜县| 兴城市| 安西县| 新邵县| 醴陵市| 西峡县| 江门市| 齐齐哈尔市| 镇巴县| 和田县|