LeetCode 46. Permutations(排序)

原题

Given a collection of distinct integers, return all possible permutations.

题目:
给定一个不同整数的集合, 返回所有可能的置换。

Example:

Input: [1,2,3]
Output:
[
  [1,2,3],
  [1,3,2],
  [2,1,3],
  [2,3,1],
  [3,1,2],
  [3,2,1]
]

My Answer

思路分析

本题直接采用回溯算法。

class Solution:
    def permute(self, nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        Solution.res = []
        temp_list = []
        self.backtrack(nums, temp_list)
        return Solution.res
        
        
    def backtrack(self, nums, temp_list):
        if len(temp_list) == len(nums):
            Solution.res.append(temp_list[:])
            return
        if len(temp_list) > len(nums):
            return
        for i in range(len(nums)):
            if nums[i] not in temp_list:
                temp_list.append(nums[i])
                self.backtrack(nums, temp_list)
                temp_list.pop()
                        

反思:

  1. 要学会利用好回溯;

猜你喜欢

转载自blog.csdn.net/Dby_freedom/article/details/82981497