python - 通过递归就地修改
问题描述
关于以下 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]
但是当我返回它时,它返回空列表。
我想知道在尝试通过递归对列表进行就地修改时是否会遗漏任何含义。
解决方案
您只需要返回您的stack
列表而不是stack.reverse()
. 正如评论中指出的那样,.reverse()
返回None
而不是反向列表。
推荐阅读
- php - .htaccess 删除带有多个参数的漂亮 url 的 php 扩展
- c# - 有没有办法改变组合框的“DropDown”字体
- ios - Xcode 10 - 无法构建 React Native 应用程序
- android - Flutter APK 大于 100 MB
- symfony - Symfony 2.1 - %kernel.debug% 不存在
- angular - 如何让Angular 6 Http Get方法返回一个observable数组而不是一个observable数组?
- vue.js - Vue index.html favicon 问题
- python - Python:从数学模块函数创建一个新函数
- html - 如何强制 html 中的段落不换行?
- c - 用标记 C 填充二维矩阵