給定兩個單詞(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」 不在字典中,所以不存在符合要求的轉換序列。
思路:bfs
class
solution}if
(end==-1
)return ans;
for(
int i=
0;isize()
+1;i++
)for
(int i=
0;isize()
;i++)}
} wordlist.
add(beginword)
;//起點建圖
int begin=wordlist.
size()
-1;for
(int i=
0;isize()
-1;i++)}
int[
] step=
newint
[wordlist.
size()
];queue
q=new
linkedlist
(); q.
offer
(begin)
; step[begin]=1
;while
(!q.
isempty()
)for
(int i=
0;iget(u)
.size()
;i++
)else
if(step[v]
==step[u]+1
)}}return ans;
}public
boolean
judge
(list
wordlist,
int a,
int b)
}return
true;}
public
void
solve
(int now,
int begin,linkedlist
road,list
> pre,list
wordlist,list
> ans)
for(
int i=
0;iget(now)
.size()
;i++
) road.
removefirst()
;return;}
}
126 單詞接龍 II
題目.high 這其實就是圖的演算法,dijkstra演算法 這道題,先求直達的最小路徑,這個用bfs沒啥好說的,一般求路徑的問題就是要用dfs,可是不需要求所有的到達路徑,也不需要求隨意的一條到達路徑,不然dfs準沒錯。所以我們還是要用bfs,不過在bfs的時候,把經過的所有節點都求出從開始到他這...
126 單詞接龍 II
題目描述 給定兩個單詞 beginword 和 endword 和乙個字典 wordlist,找出所有從 beginword 到 endword 的最短轉換序列。轉換需遵循如下規則 每次轉換只能改變乙個字母。轉換後得到的單詞必須是字典中的單詞。說明 如果不存在這樣的轉換序列,返回乙個空列表。所有單詞...
126 單詞接龍 II
題目描述 給定兩個單詞 beginword 和 endword 和乙個字典 wordlist,找出所有從 beginword 到 endword 的最短轉換序列。轉換需遵循如下規則 每次轉換只能改變乙個字母。轉換後得到的單詞必須是字典中的單詞。說明 示例 1 輸入 beginword hit end...