思路:
不用说,回溯法套路直接套
class Solution {
List<List<Integer>> res = new ArrayList<>();
public void all(int[] nums, List<Integer> trace) {//找出在当前排列的基础上的所有排列方式
if(trace.size()==nums.length)
{
List<Integer> l = new ArrayList<>();
l.addAll(trace);
res.add(l); return;
}
for(int i=0;i<nums.length;i++)//对于当前排列,找出下一个可加入排列的元素(不在当前排列中的元素都可以加入)
{
if(trace.contains(nums[i]))
{
continue;
}
else
{
trace.add(nums[i]);
all(nums,trace);
trace.remove(trace.size()-1);
}
}
}
public List<List<Integer>> permute(int[] nums)
{
all(nums,new ArrayList<Integer>());
return res;
}
}