描述
给定一个数字列表,返回其所有可能的排列。
你可以假设没有重复数字。
样例
样例 1:
输入:[1]
输出:
[
[1]
]
样例 2:
输入:[1,2,3]
输出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
签到题,直接贴代码
public 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
if (nums==null) return null;
List<List<Integer>> list = new ArrayList<>();
List<Integer> temp = new ArrayList<>();
if (nums.length==1){
temp.add(nums[0]);
list.add(temp);
return list;
}
help(nums,temp,list);
return list;
}
public static void help(int[] nums,List<Integer> temp,List<List<Integer>> list){
if (temp.size()==nums.length){
List<Integer> demo = new ArrayList<>();
for (int i = 0; i < temp.size(); i++) {
demo.add(temp.get(i));
}
list.add(demo);
return;}
for (int i = 0; i < nums.length; i++) {
if (temp.contains(nums[i])) continue;
temp.add(nums[i]);
help(nums,temp,list);
temp.remove(temp.size()-1);
}
}
}