剑指 Offer II 083. 没有重复元素集合的全排列

剑指 Offer II 083. 没有重复元素集合的全排列 #

  • 标签:数组、回溯
  • 难度:中等

题目大意 #

给定一个不含重复数字的数组 nums

要求:返回其有可能的全排列,可以按任意顺序返回。

解题思路 #

回溯算法递归遍历 nums 元素。同时使用 visited 数组来标记该元素在当前排列中是否被访问过。若未被访问过则将其加入排列中,并在访问后将该元素变为未访问状态。

代码 #

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        def backtrack(size, arrange, index):
            if index == size:
                res.append(arrange)
                return
            for i in range(size):
                if visited[i] == True:
                    continue
                visited[i] = True
                backtrack(size, arrange + [nums[i]], index + 1)
                visited[i] = False

        size = len(nums)
        res = list()
        visited = [False for _ in range(size)]
        backtrack(size, [], 0)
        return res
本站总访问量  次  |  您是本站第  位访问者