class Solution:
def findItinerary(self, tickets: List[List[str]]) -> List[str]:
tickets_dic=defaultdict(list)#这个调用是为了方便直接append。因为他会默认构建一个value是list的字典。
for item in tickets:
tickets_dic[item[0]].append(item[1])#把起始站和终点站转化为字典形式。起始站是key,终点站是以list形式存在的,对应起来。
path = ['JFK']#因为初始站是JKF,把他固定下来
def backtrack(start):
if len(path)==len(tickets)+1:#当path的长度为tickets的长度+1时说明遍历完成。
return True
tickets_dic[start].sort()#按照字母顺序排序。
for _ in tickets_dic[start]:
end=tickets_dic[start].pop(0)#因为按照自然排序最小组合,所以删除的是排在前面的
path.append(end)#添加到站。
if backtrack(end):#到站在下一个递归中变成了初始站。如果存在的话,return T
return True
path.pop()#回溯
tickets_dic[start].append(end)#回溯
backtrack('JFK')#递归调用,最一开始的初始站是JKF。
return path
leetcode332**(路径规划)
最新推荐文章于 2022-02-17 09:36:42 发布