46. Permutations
来源:互联网 发布:王欣网络直播 编辑:程序博客网 时间:2024/06/06 08:37
Given a collection of distinct numbers, return all possible permutations.
For example,
[1,2,3] have the following permutations:
[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]
思路:
采用逐一向中间集添加元素,并将当中间集元素个数等于 nums 长度的时候,将中间集添加到结果集中,并终止该层递归。
class Solution { public List<List<Integer>> permute(int[] nums) { List<List<Integer>> res = new ArrayList<>(); dfs(res, new ArrayList<Integer>(), nums, new boolean[nums.length]); return res; } private void dfs(List<List<Integer>> res, List<Integer> temp, int[] nums, boolean[] used) { if(temp.size() == nums.length) { res.add(new ArrayList<>(temp)); return; } for(int i = 0; i < nums.length; i++) { if(!used[i]) { used[i] = true; temp.add(nums[i]); dfs(res, temp, nums, used); temp.remove(temp.size() - 1); used[i] = false; } } } }
阅读全文