LeetCode第 127 題 單詞接龍 C

2021-10-23 20:29:59 字數 788 閱讀 7708

127. 單詞接龍 - 力扣(leetcode)

要找最短的,直接bfs,bfs找到的肯定是最短的。

抽象在乙個無向無權圖中,每個單詞作為節點,差距只有乙個字母的兩個單詞之間連一條邊。問題變成找到從起點到終點的最短路徑,如果存在的話。因此可以使用廣度優先搜尋方法。

相當於每條邊權值均為1的有向圖,如果起始單詞改變乙個字母可以變為另乙個單詞,那麼這兩個單詞之間的距離為1,否則為無窮。

怎麼確定乙個單詞改變乙個字母是不是能成為另乙個單詞呢?可以遍歷兩個單詞進行統計,但是如果單詞表太大的話,速度會很慢。

由於只有小寫字母,可以使用遍歷字母的方法,一次性檢查所有的單詞。

其實就是dijkstra演算法的變體,但是思路是一致的,每個單詞即為頂點,如果兩頂點之間可達,那麼他們的距離為1(只用改變乙個字母),那其實就轉化為單點源路徑問題了,只不過處理方式略有差別。

//dijkstra演算法的思路

class solution );

while(!q.empty()));

set.erase(cur);//該節點使用過了,需要進行刪除}}

cur[i] = ch; //復原}}

return 0;}};

其中查詢的部分,其實還可以使用字典樹實現。

LeetCode刷題筆記 127 單詞接龍

給定兩個單詞 beginword 和 endword 和乙個字典,找到從 beginword 到 endword 的最短轉換序列的長度。轉換需遵循如下規則 每次轉換只能改變乙個字母。轉換過程中的中間單詞必須是字典中的單詞。說明 如果不存在這樣的轉換序列,返回 0。所有單詞具有相同的長度。所有單詞只由...

LeetCode 127 單詞接龍

解題思路 1 這道題要找乙個最短路徑,可以聯想到圖的相關演算法 雖然我當時沒想到 那麼是不是應該使用最短路徑的相關演算法呢。其實不用 因為這個圖里每條邊的長度都是1,用乙個廣度優先演算法就搞定了。2規模的問題,如果你遍歷list裡的每個單詞的話,你會發現一直超時,因為有的list的規模給到了上千,每...

leetcode筆記 127單詞接龍

題目 給定兩個單詞 beginword 和 endword 和乙個字典,找到從 beginword 到 endword 的最短轉換序列的長度。轉換需遵循如下規則 每次轉換只能改變乙個字母。轉換過程中的中間單詞必須是字典中的單詞。說明 示例 1 輸入 beginword hit endword cog...