题目:
给定一组不同的整数,返回所有可能的排列。
Given a collection of distinct integers, return all possible permutations.
Input: [1,2,3]
Output:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
方法:
类似全排列
具体见【剑指offer第二版——面试题38(java)】——https://blog.csdn.net/qq_22527013/article/details/90175376
代码:
class Solution {
public List<List<Integer>> permute(int[] nums) {
List<List<Integer>> re = new LinkedList<List<Integer>>();
perOnce(nums, 0, re);
return re;
}
public void perOnce(int[] nums,int loc,List<List<Integer>> re){
if(loc==nums.length-1) {
List<Integer> cur = new LinkedList<Integer>();
for(int i=0;i<nums.length;i++) {
cur.add(nums[i]);
}
re.add(cur);
}else {
for(int i=loc;i<nums.length;i++) {
swap(nums, i, loc);
perOnce(nums, loc+1, re);
swap(nums, i, loc);
}
}
}
public void swap(int[] nums,int i,int j) {
int t = nums[i];
nums[i] = nums[j];
nums[j] = t;
}
}