2017.9.14
对于给定的一个数组。它的全排列等于 第i个元素 加上 除去第i个元素剩下的数组 的全排列 (i 从 数组中的第一个数开始,到最后一个数)
使用递归实现。
class Solution {
/**
* @param nums: A list of integers.
* @return: A list of permutations.
*/
public static List<List<Integer>> permute(int[] nums) {
// write your code here
List<List<Integer>> res = new LinkedList<>();
if(nums.length <= 0){
List<Integer> tmp = new LinkedList<>();
res.add(tmp);
return res;
}
if(nums.length == 1){
List<Integer> tmp = new LinkedList<>();
tmp.add(nums[0]);
res.add(tmp);
return res;
}
for(int i = 0; i < nums.length; i++){
int []newArr = new int[nums.length-1];
if(i != 0){
System.arraycopy(nums, 0, newArr, 0, i);
}
System.arraycopy(nums, i+1, newArr, i, nums.length-i-1);
List<List<Integer>> list = permute(newArr);
Iterator ite = list.iterator();
while(ite.hasNext()){
LinkedList<Integer> tmp = (LinkedList<Integer>)ite.next();
tmp.add(nums[i]);
res.add(tmp);
}
}
return res;
}
}