leetcode 每日一题 47. 全排列 II

回溯法

思路:

参考46.全排列,在回溯过程中通过判断数字是否已经用过进行去重。

代码:

class Solution:
    def permuteUnique(self, nums: List[int]) -> List[List[int]]:
        def pathProcess(first,usedList:List[int]):
            if  first==n:
                res.append(nums[:])
            for i in range(first,n):
                if  i != first and nums[i] in usedList:
                    continue 
                nums[first],nums[i] = nums[i],nums[first]
                pathProcess(first+1,[])
                nums[first],nums[i] = nums[i],nums[first]
                usedList.append(nums[i])
        n = len(nums)
        res = []
        pathProcess(0,[])
        return res

 

posted @ 2020-05-29 13:30  nil_f  阅读(117)  评论(0)    收藏  举报