[LeetCode]Permutations
2014-06-11 15:19
295 查看
题目描述
Given a collection of 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],
and
[3,2,1].
给出数组数字的全排列
解题思路
采用递归。我们求整个数组的全排列,可以看成求index = 0位置的所有数字,然后对每一种情况求index=[1,num.length - 1]的子数组的全排列,然后递归求解即可。
代码
public static List<List<Integer>> permute(int[] num) { List<List<Integer>> list = new ArrayList<List<Integer>>(); permutation(num,0,list); return list; }
递归求解
/** * 递归求解全排列 * @param num * @param curIndex * @param pList */ public static void permutation(int[] num,int curIndex,List<List<Integer>> pList){ if(curIndex==num.length){ //已无可交换的数字 List<Integer> list = new ArrayList<Integer>(); //添加的返回列表中 for(int i = 0;i < num.length;i++){ list.add(num[i]); } pList.add(list); } else { for(int i = curIndex;i < num.length ;i++){ //交换当前子数组的num[curIndex]和num[i] int temp = num[curIndex]; num[curIndex] = num[i]; num[i] = temp; //[curIndex + 1, num.length - 1]的全排列 permutation(num, curIndex+1, pList); //交换当前子数组的num[curIndex]和num[i],还原成初始状态 temp = num[curIndex]; num[curIndex] = num[i]; num[i] = temp; } } }
相关文章推荐
- LeetCode(44)Permutations
- [Leetcode] #46#47 Permutations I & II
- LeetCode—**字符串中数字的全排列问题Permutations
- 【LeetCode从零单刷】Permutations
- [LeetCode]Permutations
- [LeetCode 46 & 47] Permutations I & II
- LeetCode-----46.Permutations&&47.Permutations II (全排列----回溯法)
- leetcode — permutations-ii
- LeetCode题解——permutations
- [LeetCode]Permutations,解题报告
- LeetCode 46: Permutations
- Leetcode---Permutations
- LeetCode Permutations
- [leetcode]Permutations
- [leetcode]Permutations
- Leetcode-46: Permutations
- leetcode: Permutations I II
- leetcode--Permutations
- 【LeetCode】Permutations
- LeetCode (Permutations)