全排列 Posted on 2020-09-18 In Leetcode Views: Valine: 46. 全排列给定一个 没有重复 数字的序列,返回其所有可能的全排列。 示例: 12345678910输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]] 解释图例来自liweiwei。 123456789101112131415161718192021222324252627282930313233class Solution { List<List<Integer>> ans; boolean[] visited; public List<List<Integer>> permute(int[] nums) { int len = nums.length; ans = new ArrayList<List<Integer>>(); visited = new boolean[len]; dfs(nums, 0, new ArrayDeque<Integer>(len)); return ans; } public void dfs(int[] nums, int index, Deque<Integer> path){ int len = nums.length; if(index == len){ ans.add(new ArrayList<Integer>(path)); return; } //没有使用的数字都可以使用 for(int i = 0; i < len; i++){ if(!visited[i]){ visited[i] = true; path.addLast(nums[i]); dfs(nums, index + 1, path); path.removeLast(); visited[i] = false; } } }}