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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

127. Word Ladder 单词接龙

發(fā)布時間:2024/5/17 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 127. Word Ladder 单词接龙 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
給定兩個單詞(beginWord 和 endWord)和一個字典,找到從 beginWord 到 endWord 的最短轉(zhuǎn)換序列的長度。轉(zhuǎn)換需遵循如下規(guī)則:
  • 每次轉(zhuǎn)換只能改變一個字母。
  • 轉(zhuǎn)換過程中的中間單詞必須是字典中的單詞。
  • 說明:

    • 如果不存在這樣的轉(zhuǎn)換序列,返回 0。
    • 所有單詞具有相同的長度。
    • 所有單詞只由小寫字母組成。
    • 字典中不存在重復的單詞。
    • 你可以假設(shè) beginWord 和 endWord 是非空的,且二者不相同。

    示例 1:

    輸入: beginWord = "hit", endWord = "cog", wordList = ["hot","dot","dog","lot","log","cog"]輸出: 5解釋: 一個最短轉(zhuǎn)換序列是 "hit" -> "hot" -> "dot" -> "dog" -> "cog",返回它的長度 5。

    示例 2:

    輸入: beginWord = "hit" endWord = "cog" wordList = ["hot","dot","dog","lot","log"]輸出: 0解釋: endWord "cog" 不在字典中,所以無法進行轉(zhuǎn)換。

    雙向廣度優(yōu)先搜索

    本題要求的是最短轉(zhuǎn)換序列的長度,看到最短首先想到的就是廣度優(yōu)先搜索。想到廣度優(yōu)先搜索自然而然的就能想到圖,但是本題并沒有直截了當?shù)慕o出圖的模型,因此我們需要把它抽象成圖的模型。

    我們可以把每個單詞都抽象為一個點,如果兩個單詞可以只改變一個字母進行轉(zhuǎn)換,那么說明他們之間有一條雙向邊。因此我們只需要把滿足轉(zhuǎn)換條件的點相連,就形成了一張

    基于該圖,我們以 beginWord 為圖的起點,以 endWord 為終點進行廣度優(yōu)先搜索,尋找 beginWord 到 endWord 的最短路徑。

    根據(jù)給定字典構(gòu)造的圖可能會很大,而廣度優(yōu)先搜索的搜索空間大小依賴于每層節(jié)點的分支數(shù)量。假如每個節(jié)點的分支數(shù)量相同,搜索空間會隨著層數(shù)的增長指數(shù)級的增加。考慮一個簡單的二叉樹,每一層都是滿二叉樹的擴展,節(jié)點的數(shù)量會以 222 為底數(shù)呈指數(shù)增長。

    如果使用兩個同時進行的廣搜可以有效地減少搜索空間。一邊從 beginWord 開始,另一邊從 endWord 開始。我們每次從兩邊各擴展一層節(jié)點,當發(fā)現(xiàn)某一時刻兩邊都訪問過同一頂點時就停止搜索。這就是雙向廣度優(yōu)先搜索,它可以可觀地減少搜索空間大小,從而提高代碼運行效率。

    Python

    class Solution:def ladderLength(self, beginWord: str, endWord: str, wordList: List[str]) -> Union[int, float]:def addWord(word: str):if word not in wordId:nonlocal nodeNumwordId[word] = nodeNumnodeNum += 1def addEdge(word: str):addWord(word)id1 = wordId[word]chars = list(word)for i in range(len(chars)):tmp = chars[i]chars[i] = '*'newWord = ''.join(chars)addWord(newWord)id2 = wordId[newWord]edge[id1].append(id2)edge[id2].append(id1)chars[i] = tmpwordId, nodeNum = dict(), 0edge = collections.defaultdict(list)for word in wordList:addEdge(word)addEdge(beginWord)if endWord not in wordId:return 0disBegin = [float("inf")] * nodeNumbeginId = wordId[beginWord]disBegin[beginId] = 0queBegin = collections.deque([beginId])disEnd = [float("inf")] * nodeNumendId = wordId[endWord]disEnd[endId] = 0queEnd = collections.deque([endId])while queBegin or queEnd:queBeginSize = len(queBegin)for _ in range(queBeginSize):nodeBegin = queBegin.popleft()if disEnd[nodeBegin] != float("inf"):return (disBegin[nodeBegin] + disEnd[nodeBegin]) // 2 + 1for it in edge[nodeBegin]:if disBegin[it] == float("inf"):disBegin[it] = disBegin[nodeBegin] + 1queBegin.append(it)queEndSize = len(queEnd)for _ in range(queEndSize):nodeEnd = queEnd.popleft()if disBegin[nodeEnd] != float("inf"):return (disBegin[nodeEnd] + disEnd[nodeEnd]) // 2 + 1for it in edge[nodeEnd]:if disEnd[it] == float("inf"):disEnd[it] = disEnd[nodeEnd] + 1queEnd.append(it)return 0

    總結(jié)

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

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

    主站蜘蛛池模板: 国产主播av在线 | 毛片2 | 久久久精品网 | 精品免费视频 | 狠狠干天天干 | 久久成人亚洲 | 欧美亚洲精品一区二区 | 欧美乱妇一区二区三区 | 无码一区二区三区在线 | 无码人妻丰满熟妇区毛片蜜桃精品 | 亚洲羞羞| 国产精品18p | 黄色片网站在线看 | 超碰人人射 | 丰满大爆乳波霸奶 | 91福利社在线观看 | 毛片毛片毛片毛片毛片 | 国产午夜福利一区 | 欧洲国产精品 | 一区二区三区三区在线 | 亚洲欧美韩日 | 97少妇| 国产精品一区视频 | 日韩精品一区二区在线 | 手机在线看a | 在线观看国产一级片 | 日韩一区二区视频在线观看 | 亚洲污污视频 | 色97色| 日韩人妻精品一区二区三区 | 狠狠草视频| 毛片手机在线 | 爽爽免费视频 | 青青青草视频在线观看 | 国产破处视频 | 蜜桃久久av一区 | 精品久久五月天 | 欧美一区二区三区视频 | 国内成人精品视频 | 不卡视频在线观看 | 色婷婷香蕉在线一区二区 | 国产一区二区内射 | 麻豆视频一区 | 五月激情开心网 | 68日本xxxxxⅹxxx22| 欧美成人一级视频 | 国产在线视频99 | 都市激情亚洲色图 | 国产性猛交96 | 国产成人欧美 | 伊人啪啪网| 国产欧美精品一区二区色综合朱莉 | 免费无码av片在线观看 | 日韩电影一区二区在线观看 | 日韩一区二区视频在线 | 韩国一区二区在线播放 | 亚洲风情亚aⅴ在线发布 | 中国18videosex极品 | 一区二区激情视频 | 夜夜操夜夜爱 | 亚洲天堂免费在线观看视频 | 欧洲亚洲一区二区三区 | 亚洲激情久久久 | 做视频 | 你懂的网站在线 | 九色视频网 | 国产网红在线观看 | 99re这里只有精品6 | 亚洲日本黄色 | 精品久久久久久久久久久久 | 日本h漫在线观看 | 日本中文字幕在线 | 中文字幕人妻丝袜乱一区三区 | 久草视频这里只有精品 | 日韩一及片 | 久草免费在线色站 | 成人中文字幕在线 | 99热热热热 | 久久9久久 | 国产999在线观看 | 美女张开腿流出白浆 | 精品黑人一区二区三区观看时间 | 国产精品丝袜一区二区 | 亚洲精品国产成人av在线 | 国产夫妇交换聚会群4p | 少妇人禽zoz0伦视频 | 五月天色婷婷丁香 | 人人爽人人爽人人 | 成人深夜福利 | 91在线| 中国老太婆性做爰 | 韩国激情呻吟揉捏胸视频 | 国产精品色婷婷99久久精品 | 国产91页| 4虎tv| 久草高清| 2021国产精品| 免费不卡av在线 | 手机看片1024久久 |