思路:
主函数中重点:先将tickets数组排序,再利用排序后的数组生成字典(字典的key表示出发地,value数组是此处出发地能够到达的目的地列表)。
递归函数:
当出发地From在字典中,并且从此出发地到达的目的地列表不为空时,记录列表的第一个目的地(这是下一次的出发地),删除已经访问过得目的地,调用递归函数。在while循环外面将From加入result数组中。(不太理解)
最终得到的result是逆序的,return的时候要在反转一下。
class Solution(object):
def back(self,From):
while From in self.Tdic and len(self.Tdic[From])>0:
next = self.Tdic[From][0]
self.Tdic[From].pop(0)
self.back(next)
self.result.append(From)
def findItinerary(self, tickets):
self.Tdic=dict()
tickets.sort()
for key,value in tickets:
if key in self.Tdic:
self.Tdic[key].append(value)
else:
self.Tdic[key]=[value]
self.result=[]
self.back('JFK')
return self.result[::-1]