如何解决情况1与情况2之间的区别?
我已经解决了这个问题,Convert Sorted Array。
起初 我不知道最后要返回什么,所以我在给定的函数内创建了另一个函数来进行递归
**case 1**
def sortedArrayToBST(self,nums: List[int]) -> TreeNode:
def bst(num_list):
# base_case
if len(nums) < 2:
return TreeNode(nums[-1])
# recursive_case
mid = len(nums) // 2
node = TreeNode(nums[mid])
node.left = bst(nums[:mid])
node.right = bst(nums[mid + 1:])
ans = bst(nums)
return ans
但是,结果一直给我“超过时间限制或递归的最大深度”。
然后,一旦我删除了内部的“ bts”函数,然后对给定函数(sortedArrayToBST)本身进行了相同的递归处理,错误就象魔术一样消失了。
**case 2**
def sortedArrayToBST(self,nums: List[int]) -> TreeNode:
if not nums:
return None
if len(nums) == 1:
return TreeNode(nums[-1])
# recursive_case
mid = len(nums) // 2
node = TreeNode(nums[mid])
node.left = self.sortedArrayToBST(nums[:mid])
node.right = self.sortedArrayToBST(nums[mid + 1:])
return node
但是,话虽如此,我看不出两个代码之间有什么区别。两者之间必须有一个关键的区别,但我自己无法解决。
请问一下案例1和案例2之间的区别是什么,那么是什么导致一个错误而不是另一个错误。
解决方法
在情况1中,经过处理的列表的长度不会在递归调用中减少,因为在bts
的参数为num_list
的同时,nums
也在其主体中被处理。如果在num_list
中处理了nums
(而不是bts
),错误将在情况1中消失。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。