332. 重新安排行程
給定乙個機票的字串二維陣列 [from, to],子陣列中的兩個成員分別表示飛機出發和降落的機場地點,對該行程進行重新規劃排序。所有這些機票都屬於乙個從 jfk(甘迺迪國際機場)出發的先生,所以該行程必須從 jfk 開始。
說明:如果存在多種有效的行程,你可以按字元自然排序返回最小的行程組合。例如,行程 [「jfk」, 「lga」] 與 [「jfk」, 「lgb」] 相比就更小,排序更靠前
所有的機場都用三個大寫字母表示(機場**)。
假定所有機票至少存在一種合理的行程。
示例 1:
輸入: [[「muc」, 「lhr」], [「jfk」, 「muc」], [「sfo」, 「sjc」], [「lhr」, 「sfo」]]
輸出: [「jfk」, 「muc」, 「lhr」, 「sfo」, 「sjc」]
示例 2:
輸入: [[「jfk」,「sfo」],[「jfk」,「atl」],[「sfo」,「atl」],[「atl」,「jfk」],[「atl」,「sfo」]]
輸出: [「jfk」,「atl」,「jfk」,「sfo」,「atl」,「sfo」]
解釋: 另一種有效的行程是 [「jfk」,「sfo」,「atl」,「jfk」,「atl」,「sfo」]。但是它自然排序更大更靠後。
class
solution
:def
finditinerary
(self, tickets: list[list[
str]])
-> list[
str]
: graph = collections.defaultdict(
list
) link = collections.defaultdict(
int)
for s, t in tickets:
#建立乙個圖和連線表
graph[s]
link[
(s,t)]+=
1 n =
len(tickets)
res =
["jfk"
]def
dfs(sta):if
len(res)
== n+1:
return
true
for tar in
sorted
(graph[sta]):
#這裡對後序的連線進行排序
if link[
(sta, tar)
]>0:
link[
(sta, tar)]-=
1if dfs(tar)
:return
true
link[
(sta, tar)]+=
1 res.pop(
) dfs(
"jfk"
)return res
Leetcode 332 重新安排行程
給定乙個機票的字串二維陣列 from,to 子陣列中的兩個成員分別表示飛機出發和降落的機場地點,對該行程進行重新規劃排序。所有這些機票都屬於乙個從 jfk 甘迺迪國際機場 出發的先生,所以該行程必須從 jfk 出發。說明 如果存在多種有效的行程,你可以按字元自然排序返回最小的行程組合。例如,行程 j...
LeetCode 332 重新安排行程
題意 給定乙個機票的字串二維陣列 from,to 子陣列中的兩個成員分別表示飛機出發和降落的機場地點,對該行程進行重新規劃排序。所有這些機票都屬於乙個從 jfk 甘迺迪國際機場 出發的先生,所以該行程必須從 jfk 開始。說明 如果存在多種有效的行程,你可以按字元自然排序返回最小的行程組合。例如,行...
Leetcode 332 重新安排行程 C
給定乙個機票的字串二維陣列 from,to 子陣列中的兩個成員分別表示飛機出發和降落的機場地點,對該行程進行重新規劃排序。所有這些機票都屬於乙個從jfk 甘迺迪國際機場 出發的先生,所以該行程必須從 jfk 出發。說明 如果存在多種有效的行程,你可以按字元自然排序返回最小的行程組合。例如,行程 jf...