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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

126. Word Ladder II

發布時間:2024/5/7 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 126. Word Ladder II 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Title

給定兩個單詞(beginWord 和 endWord)和一個字典 wordList,找出所有從 beginWord 到 endWord 的最短轉換序列。轉換需遵循如下規則:

每次轉換只能改變一個字母。
轉換過程中的中間單詞必須是字典中的單詞。

說明:

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

示例 1:

輸入:

beginWord = "hit", endWord = "cog", wordList = ["hot","dot","dog","lot","log","cog"]

輸出:

[["hit","hot","dot","dog","cog"],["hit","hot","lot","log","cog"] ]

示例 2:

輸入:

beginWord = "hit" endWord = "cog" wordList = ["hot","dot","dog","lot","log"]

輸出:

[]

解釋: endWord “cog” 不在字典中,所以不存在符合要求的轉換序列。

Solve

  • 將所有單詞構建桶,便于查找鄰接詞。構建桶的方式是依次將一個詞的各個字母挖空,用字典進行保存

  • 廣度優先搜索進行遍歷,這里構建三個數據結構:

    • beFound:用于標記首次遍歷的詞,同時記錄首次遍歷的深度
    • preWords:用一個默認列表字典記錄到達該節點的前溯詞列表,需注意對于每個可能搜索到該詞的路徑,只要深度不超過已有路徑,都應加入前溯詞列表
    • toSeen:用一個雙端隊列存儲待遍歷詞及當前深度。
  • 如果搜索到了目標節點endWord,則依次往前遞歸輸出解:每個解的頭節點若包含多個前溯詞,則解相應增加。利用python列表嵌套推導式實現。

  • Code

    class Solution:def findLadders(self, beginWord: str, endWord: str, wordList: List[str]) -> List[List[str]]:length = len(beginWord)wordList.append(beginWord)# 構建具有鄰接關系的桶buckets = defaultdict(list)for word in wordList:for i in range(length):match = word[:i] + '_' + word[i + 1:]buckets[match].append(word)print(buckets)# BFS遍歷preWords = defaultdict(list) # 前溯詞列表toSeen = deque([(beginWord, 1)]) # 待遍歷詞及深度列表beFound = {beginWord: 1} # 已探測詞詞列表while toSeen:curWord, level = toSeen.popleft()for i in range(len(beginWord)):match = curWord[:i] + '_' + curWord[i + 1:]for word in buckets[match]:if word not in beFound:beFound[word] = level + 1toSeen.append((word, level + 1))if beFound[word] == level + 1: # 當前深度等于該詞首次遍歷深度,則仍應加入前溯詞列表preWords[word].append(curWord)if endWord in beFound and level + 1 > beFound[endWord]: # 已搜索到目標詞,且完成當前層遍歷break# 列表推導式輸出結果if endWord in beFound:res = [[endWord]]while res[0][0] != beginWord:res = [[word] + r for r in res for word in preWords[r[0]]]return reselse:return []

    總結

    以上是生活随笔為你收集整理的126. Word Ladder II的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 手机看片1024日韩 | xxxxx18日本| 色婷婷久久一区二区三区麻豆 | 免费观看国产精品 | 国产av无码专区亚洲a∨毛片 | 日本一区二区三区电影在线观看 | 免费三片在线视频 | 国产又粗又猛又黄又爽的视频 | 天堂婷婷 | 青草伊人网 | 久久久久久国产精品免费免费 | 高清乱码免费网 | 海角社区登录 | 欧美性视频在线播放 | 高清国产一区二区 | 天天插天天射 | 亚洲aⅴ在线 | 国产农村妇女毛片精品久久 | 国产精品久久久久久久久久久久久久久久久 | 亚洲免费小视频 | 一级片黄色的 | 另类小说亚洲色图 | 国产综合社区 | 色五婷婷| 亚洲精品久久久久久久久久吃药 | 国产精品成人免费视频 | 一二三四av| 黑丝美女一区二区 | 中文字幕人妻丝袜乱一区三区 | 日韩精品视频一区二区三区 | 自拍第一区 | 欧美一级看片 | 波多野结衣影院 | 日本成人中文字幕 | 四虎少妇做爰免费视频网站四 | 亚洲18在线看污www麻豆 | 天堂色区| 日韩国产网站 | 国产在线视频福利 | 一区在线不卡 | 老汉色av| 欧美老少做受xxxx高潮 | 国产精品11 | 亚洲深夜视频 | 肥老熟妇伦子伦456视频 | 亚洲精品理论片 | 精品在线播放视频 | 欧美日韩成人在线视频 | 免费日本黄色片 | 完美搭档在线观看 | 久久黄色一级片 | 不用播放器的av网站 | 日韩在线视频二区 | 国产乱强伦一区二区三区 | 91成人在线观看高潮 | 欧美日韩不卡一区二区 | 国产第一福利影院 | 我要色综合网 | 国产日韩精品在线观看 | 在线中文字幕av | 成人在线免费播放视频 | 久久精品久久久精品美女 | 中文字幕三级视频 | 久久这里都是精品 | 欧美大片高清免费观看 | 国产人成视频在线观看 | 欧美日韩一区二区三区不卡 | 久久久精品人妻av一区二区三区 | 国产成人精品影院 | 国产麻豆91 | 九色精品| 亚洲影音| 91尤物在线 | 天天操天天插天天射 | 色中文网| 欧美精品区 | 久久性 | 黄色免费在线看 | 国产真实交换夫妇视频 | 国产精品无码乱伦 | 青娱乐免费在线视频 | 日韩欧美国产精品综合嫩v 国产小毛片 | 亚洲黄色免费网站 | 日韩久草| 欧美男女性生活视频 | 日本精品少妇 | 一区二区不卡视频 | 日本国产在线播放 | 午夜激情婷婷 | 91视频在线网站 | 色开心 | 都市激情 自拍偷拍 | 男人的天堂国产 | 91色| 国产欧美日韩综合精品一区二区 | 日韩美女视频一区 | 日日骚网 | 日本激情视频在线观看 | av第一区|