讨论/题目交流/全排列用python结果打印问题/
全排列用python结果打印问题

请教一下大佬们,为什么res最后没有正常返回呢?应该改哪里。谢谢谢谢

class Solution(object):
    def permute(self, nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        def backtrack(res, track, nums):
            if len(nums) == 0:
                res.append(track)
                print(res) #这里能正常输出res包含所有全排列的结果
                return
            for i in range(len(nums)):
                track.append(nums[i])
                backtrack(res, track, nums[:i] + nums[i+1:])
                track.pop()

        res = []
        track = []
        backtrack(res, track, nums)
        return res

输入
[1,2,3]
输出
[[],[],[],[],[],[]]
预期结果
[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
stdout
[[1, 2, 3]]
[[1, 3, 2], [1, 3, 2]]
[[2, 1, 3], [2, 1, 3], [2, 1, 3]]
[[2, 3, 1], [2, 3, 1], [2, 3, 1], [2, 3, 1]]
[[3, 1, 2], [3, 1, 2], [3, 1, 2], [3, 1, 2], [3, 1, 2]]
[[3, 2, 1], [3, 2, 1], [3, 2, 1], [3, 2, 1], [3, 2, 1], [3, 2, 1]]

展开讨论

将这里的 print 注释掉,在外层只打印一次即可。你给的 stdout 是错的吧

if len(nums) == 0:
                res.append(track)
                print(res) #这里能正常输出res包含所有全排列的结果
                return
展开全部 2 讨论