A daily problem --- LeetCode (46) full array

Subject description:

Given a sequence of numbers is not repeated, all possible return to full permutation.
Input: [1,2,3]
Output:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2 ],
[3,2,1]
]

 

import itertools
class Solution:
    def permute(self, nums):
        res = []
        def backtrack(nums, tmp):
            if not nums:
                res.append(tmp)
                return 
            for i in range(len(nums)):
                backtrack(nums[:i] + nums[i+1:], tmp + [nums[i]])
        backtrack(nums, [])
        return res
    def permute2(self,nums):
        return list(itertools.permutations(nums))

LeetCode (47) full array 2

Description Title:
Given a sequence of numbers may include repeat, return all distinct full array.
Input: [1,1,2]
Output:
[
[1,1,2],
[1,2,1],
[2,1,1]
]

class Solution:
    def permuteUnique(self, nums):
        res = []
        def backtrack(nums, tmp):
            if not nums:
                res.append(tmp)
                return 
            for i in range(len(nums)):
                backtrack(nums[:i] + nums[i+1:], tmp + [nums[i]])
        backtrack(nums, [])
        new_res = []
        for data in res:
            if data not in new_res:
                new_res.append(data)
        return new_res

 

Guess you like

Origin www.cnblogs.com/fighting25/p/11494667.html