为什么我的解决方案不适用于 leetcode 子集问题?

问题描述 投票:0回答:0

我在 leetcode 上被问到一个关于如何返回唯一数字整数数组的幂集(所有子集)的问题。我尝试在 Python 中使用递归回溯解决方案,我在 for 循环中遍历数组的每个元素并进行递归函数调用。问题是每次我将一个新元素附加到 curr 时,它都会影响所有以前添加到 res 的列表。我不确定为什么。是不是因为 Python 把每个变量都当成了一个对象?那么如果curr变量被修改了,那么所有的curr对象都加到res了吗?任何建议将不胜感激。

class Solution:
    def subsets(self, nums):
        res = []

        def helper(i, curr):
            for j in range(i, len(nums)):   
                curr.append(nums[i])  
                res.append(nums)                                 
                helper(i+1, curr)
                curr.pop()

        helper(0, [])
        return res
python list recursion subset-sum recursive-backtracking
© www.soinside.com 2019 - 2024. All rights reserved.