332 重新安排行程

2021-10-11 02:00:14 字數 1370 閱讀 7102

題目描述:

如果存在多種有效的行程,請你按字元自然排序返回最小的行程組合。例如,行程 [「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」]。但是它自然排序更大更靠後。

方法1:

主要思路:

(1)先使用機票建立有向圖,然後將到達的城市作為鄰接表的元素,儲存結構使用multiset來對到達的城市進行排序,為了後面可以標識城市是否到達過,加上乙個bool型別來進行標識;

(2)由於建立的鄰接表已經是有序的,按序進行訪問,獲得的第乙個,滿足要求的結果就是最小的結果;

class

solution

for(

auto

& it:mp[res.

back()

])res.

pop_back()

;//回溯

it.second=

false

;//回溯}}

//說明沒有找到路徑,返回false

return

false;}

vector

finditinerary

(vector>

& tickets));

//同時標識該城市沒有訪問過

} vector res;

//儲存訪問的城市

res.

push_back

("jfk");

//初始化

int size_res=tickets.

size()

+1;//最終的訪問路徑的長度

dfs(mp,res,size_res)

;//深度搜尋

return res;}}

;

332 重新安排行程

給定乙個機票的字串二維陣列 from,to 子陣列中的兩個成員分別表示飛機出發和降落的機場地點,對該行程進行重新規劃排序。所有這些機票都屬於乙個從jfk 甘迺迪國際機場 出發的先生,所以該行程必須從 jfk 出發。說明 如果存在多種有效的行程,你可以按字元自然排序返回最小的行程組合。例如,行程 jf...

332 重新安排行程

給定乙個機票的字串二維陣列 from,to 子陣列中的兩個成員分別表示飛機出發和降落的機場地點,對該行程進行重新規劃排序。所有這些機票都屬於乙個從 jfk 甘迺迪國際機場 出發的先生,所以該行程必須從 jfk 開始。說明 如果存在多種有效的行程,你可以按字元自然排序返回最小的行程組合。例如,行程 j...

Leetcode 332 重新安排行程

給定乙個機票的字串二維陣列 from,to 子陣列中的兩個成員分別表示飛機出發和降落的機場地點,對該行程進行重新規劃排序。所有這些機票都屬於乙個從 jfk 甘迺迪國際機場 出發的先生,所以該行程必須從 jfk 出發。說明 如果存在多種有效的行程,你可以按字元自然排序返回最小的行程組合。例如,行程 j...