国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

(未完成)332. Reconstruct Itinerary

2019-11-08 02:36:18
字體:
來源:轉載
供稿:網友

Given a list of airline tickets rePResented by pairs of departure and arrival airports [from, to], reconstruct the itinerary in order. All of the tickets belong to a man who departs from JFK. Thus, the itinerary must begin with JFK.

Note: If there are multiple valid itineraries, you should return the itinerary that has the smallest lexical order when read as a single string. For example, the itinerary [“JFK”, “LGA”] has a smaller lexical order than [“JFK”, “LGB”]. All airports are represented by three capital letters (IATA code). You may assume all tickets form at least one valid itinerary. Example 1: tickets = [[“MUC”, “LHR”], [“JFK”, “MUC”], [“SFO”, “SJC”], [“LHR”, “SFO”]] Return [“JFK”, “MUC”, “LHR”, “SFO”, “SJC”]. Example 2: tickets = [[“JFK”,”SFO”],[“JFK”,”ATL”],[“SFO”,”ATL”],[“ATL”,”JFK”],[“ATL”,”SFO”]] Return [“JFK”,”ATL”,”JFK”,”SFO”,”ATL”,”SFO”]. Another possible reconstruction is [“JFK”,”SFO”,”ATL”,”JFK”,”ATL”,”SFO”]. But it is larger in lexical order.

s思路: 1. 給兩兩連接的機場,要求得到一整條路線。仔細觀察,還是圖的遍歷嘛,但又不同與之前看到的圖的遍歷,因為之前的遍歷是考慮節點是否被訪問,而這里則是邊是否被訪問。這一點一定要先搞明白。如下圖,從JFK開始,有兩個鄰居,ATL和SFO,先訪問哪個題目有規定,字典排序小的機場先訪問,所以先訪問ATL,由于是找路線,自然是用dfs最方便,訪問了ATL,常規的做法是需要標記已經訪問過,但這里只需要使用一次這條邊,所以干脆直接刪除這條邊,就不用標記是否訪問,然后到ATL繼續遍歷,發現也有兩個鄰居JFK,SFO,這里也是一樣,西安訪問JFK,同時把JFK這條邊刪除;現在到JFK后,發現JFK只有一個鄰居SFO(ATL已經被刪除),于是訪問SFO,同時刪除SFO這條鏈接;繼續遍歷SFO的鄰居,發現有ATL,于是訪問ATL,同時刪除ATL這條邊,現在到ATL發現也只有一個鄰居SFO,于是繼續訪問SFO,同時刪除鏈接,到SFO發現沒有鄰居了,意味著結束了嗎?還是需要回到上一層繼續遍歷呢?保險起見,是需要回到上一層吧! 這里寫圖片描述 2.由于要字典順序訪問,所以最好對每個節點的鄰居排序,所以不用vector放鄰居,而用map. 3. 上面分析還是不對,debug的時候,發現前面分析的不對呀,沒有反應過來,所謂圖里面元素的排序,本質就是topological sort,先用dfs走一邊,誰的鄰居節點都遍歷完誰就先放入vector,最好等所有節點都放入vector再reverse vector即可!由于不是檢測是否有環,所以仍然不需要用visited來表示一個節點是否訪問完全還是正在訪問,

class Solution {public: void dfs(unordered_map<string,set<string>>&mm,vector<string>&res,string cur){ if(mm.count(cur)==0) return; for(auto it=mm[cur].begin();it!=mm[cur].end();) for(auto&str:mm[cur]){ string next=str; mm[cur].erase(str); res.push_back(next); dfs(mm,res,next); } } vector<string> findItinerary(vector<pair<string, string>> tickets) { // unordered_map<string,set<string>> mm; for(auto&t:tickets){ mm[t.first].insert(t.second); } vector<string> res; dfs(mm,res,"JFK"); return res; }};
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 绥棱县| 雅安市| 麦盖提县| 苗栗县| 台北市| 登封市| 黄浦区| 北安市| 恩施市| 和静县| 杭锦旗| 五原县| 巢湖市| 巴东县| 商洛市| 苍梧县| 海阳市| 怀仁县| 巴中市| 交口县| 汶上县| 扶绥县| 开化县| 岑巩县| 淮北市| 太谷县| 新昌县| 兰州市| 咸阳市| 伊宁县| 库车县| 甘德县| 嘉荫县| 孝义市| 南溪县| 资兴市| 澄迈县| 绥阳县| 沅陵县| 绥阳县| 从化市|