给定一个不含重复数字的数组 nums
,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
示例 1:
示例 2:
输入:nums = [0,1] 输出:[[0,1],[1,0]]
|
示例 3:
提示:
1 <= nums.length <= 6
-10 <= nums[i] <= 10
nums
中的所有整数 互不相同
思路
直接爆搜。
class Solution {
int[] nums; boolean[] visit; int len; List<List<Integer>> ans;
public List<List<Integer>> permute(int[] nums) { ans = new ArrayList<>(); this.nums = nums; len = nums.length; visit = new boolean[len]; dfs(new ArrayList<>()); return ans; }
public void dfs(List<Integer> list) { if (list.size() == len) { ans.add(new ArrayList<>(list)); return; }
for (int i = 0; i < len; i++) { if (visit[i]) continue; else { visit[i] = true; list.add(nums[i]); dfs(list); list.remove(list.size() - 1); visit[i] = false; } } } }
|
复杂度