zoukankan      html  css  js  c++  java
  • 0332重新安排行程 Marathon

    给你一份航线列表 tickets ,其中 tickets[i] = [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。

    所有这些机票都属于一个从 JFK(肯尼迪国际机场)出发的先生,所以该行程必须从 JFK 开始。如果存在多种有效的行程,请你按字典排序返回最小的行程组合。

    例如,行程 ["JFK", "LGA"] 与 ["JFK", "LGB"] 相比就更小,排序更靠前。
    假定所有机票至少存在一种合理的行程。且所有的机票 必须都用一次 且 只能用一次。

    示例 1:

    输入:tickets = [["MUC","LHR"],["JFK","MUC"],["SFO","SJC"],["LHR","SFO"]]
    输出:["JFK","MUC","LHR","SFO","SJC"]
    示例 2:

    输入:tickets = [["JFK","SFO"],["JFK","ATL"],["SFO","ATL"],["ATL","JFK"],["ATL","SFO"]]
    输出:["JFK","ATL","JFK","SFO","ATL","SFO"]
    解释:另一种有效的行程是 ["JFK","SFO","ATL","JFK","ATL","SFO"] ,但是它字典排序更大更靠后。

    提示:

    1 <= tickets.length <= 300
    tickets[i].length == 2
    fromi.length == 3
    toi.length == 3
    fromi 和 toi 由大写英文字母组成
    fromi != toi

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/reconstruct-itinerary
    参考:

    python

    # 0332.重新安排行程
    class Solution:
        def findItinerary(self, tickets:[[str]]) -> [str]:
            from collections import defaultdict
            tickets_dict = defaultdict(list)
            for item in tickets:
                tickets_dict[item[0]].append(item[1])
    
            path = ["JFK"]
            def track(start_point):
                # 终止条件
                if len(path) == len(tickets) + 1:
                    return True
                tickets_dict[start_point].sort()
                for _ in tickets_dict[start_point]:
                    # 必须及时删除,避免出现死循环
                    end_point = tickets_dict[start_point].pop(0)
                    path.append(end_point)
                    # 只要找到一个就可以返回
                    if track(end_point):
                        return True
                    path.pop()
                    tickets_dict[start_point].append(end_point)
    
            track("JFK")
            return path
    

    golang

    待完善
    
  • 相关阅读:
    js中有哪些是循环遍历的方法?
    堆内存和栈内存
    Html5和Css3
    PyCharm IDE 的使用
    python基础语法
    数据挖掘书籍简介
    寄存器-2
    汇编基础
    Std::bind()
    手游页游和端游的服务端框架
  • 原文地址:https://www.cnblogs.com/davis12/p/15595906.html
Copyright © 2011-2022 走看看