欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

332.重新安排行程

程序员文章站 2022-03-07 17:17:24
...

难度:中等
题目描述:
332.重新安排行程
思路总结

  • 方法一:字典,优先队列,DFS递归。

这个方法属实精彩,利用了最小堆的排序特性满足了题目中的说明1,对于一些特殊用例,比如循环返回图(具体见参考1)使用DFS递归,实现了先存较小的,也很好的满足了说明1。

参考阅读:

题解一:

import heapq
class Solution:
    def findItinerary(self, tickets: List[List[str]]) -> List[str]:
        #思路:将其转换为字典,其中每个值为一个heap,然后一个个往后查
        tk = {}
        for t in tickets:
            if t[0] not in tk.keys():
                tk[t[0]] = []
            heapq.heappush(tk[t[0]], t[1])
        res = []
        self.visit(tk, "JFK", res)
        return res
    def visit(self,tk, pre, res):
        #DFS遍历图
        while pre in tk.keys() and len(tk[pre])>0:
            nxt = heapq.heappop(tk[pre])
            self.visit(tk, nxt, res)
        res.insert(0,pre)

题解一结果:
332.重新安排行程

相关标签: # leetcode