一、题目
二、代码
class Solution
{
List<List<Integer>> re_list = new LinkedList<>();
LinkedList<Integer> path = new LinkedList<>();
public void back(int[] nums)
{
int i;
int length ;
length = nums.length;
if(path.size() == length)
{
re_list.add(new LinkedList<>(path));
return;
}
if(path.size()>length ) return;
// re_list.add(new LinkedList<>(path));
for(i=0;i<length;i++)
{
if(path.contains(nums[i])==false)
{
path.add(nums[i]);
back(nums);
path.removeLast();
}
}
}
public List<List<Integer>> permute(int[] nums)
{
back(nums);
return re_list;
}
}
三、运行结果
四、附录
二刷
class Solution
{
List<List<Integer>> re = new LinkedList<>();
List<Integer> path = new LinkedList<>();
List<Integer> have = new LinkedList<>();
public void track(int[] nums,int start)
{
int i;
int final_length = nums.length;
int length = path.size();
//System.out.println(" length "+length);
if(length==final_length) re.add(new LinkedList<>(path));
if(length>final_length) return;
for(i=0;i<final_length;i++)
{
if(have.contains(nums[i]) == false)
{
path.add(nums[i]);
have.add(nums[i]);
track(nums,0);
path.removeLast();
have.removeLast();
}
}
}
public List<List<Integer>> permute(int[] nums)
{
track(nums,0);
return re;
}
}