关于以下 leetcode 问题 #210,我尝试通过对堆栈进行就地修改来创建更精简的 DFS 算法,如下所示:
numCourses = 2
prerequisites = [[1,0]]
class Solution(object):
def findOrder(self, numCourses, prerequisites):
"""
:type numCourses: int
:type prerequisites: List[List[int]]
:rtype: List[int]
"""
stack = []
self.dfs(prerequisites, 0, stack)
return stack.reverse()
def dfs(self, prereqs, node, stack):
for courses in prereqs:
if node == courses[1] and courses[0] not in stack:
self.dfs(prereqs, courses[0], stack)
stack.append(node)
但是,当我在函数中返回堆栈时findOrder
,它返回一个空列表。即使我在调试时,它也显示堆栈已用值更新,[0,1]
但是当我返回它时,它返回空列表。
我想知道在尝试通过递归对列表进行就地修改时是否会遗漏任何含义。