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] ] 题意:求一个序列的各种组合。思路:使用DFS策略。代码如下:
package leetcode; import java.util.ArrayList; import java.util.List; public class Solution { private List<List<Integer>> list = new ArrayList<List<Integer>>(); private void dfs(int[] nums, List<Integer> subList){ if(subList.size() == nums.length){ list.add(subList); return; } for (int i = 0; i < nums.length; i++){ if(!subList.contains(nums[i])){ List<Integer> subList2 = new ArrayList<Integer>(); subList2.addAll(subList);//subList2是对subList的复制 subList2.add(nums[i]); dfs(nums, subList2); } } } public List<List<Integer>> permute(int[] nums) { List<Integer> subList = new ArrayList<Integer>(); dfs(nums, subList); return list; } }
