目錄
- 一、題目
- 二、解法
- 完整代碼
一、題目
給定一個不含重復數字的數組 nums ,返回其 所有可能的全排列 。你可以 按任意順序 返回答案。
示例 1:
輸入:nums = [1,2,3]
輸出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
示例 2:
輸入:nums = [0,1]
輸出:[[0,1],[1,0]]
示例 3:
輸入:nums = [1]
輸出:[[1]]
提示:
1 <= nums.length <= 6
-10 <= nums[i] <= 10
nums 中的所有整數 互不相同
二、解法
深度優先遍歷,針對結果的每個位置,都進行一次遍歷,使用on_path
數組來記錄,此位置是否使用過。
完整代碼
class Solution:def permute(self, nums: List[int]) -> List[List[int]]:n = len(nums)path = [0] * non_path = [False] * nres = []def dfs(i):if i == n:res.append(path.copy())returnfor j in range(n):if not on_path[j]:on_path[j] = Truepath[i] = nums[j]dfs(i + 1)on_path[j] = Falsedfs(0)return res