126 單詞接龍 II

2021-10-06 21:50:00 字數 1864 閱讀 7990

給定兩個單詞(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...