一、题目
二、代码
class Solution
{
List<List<Integer>> re_list = new LinkedList<>();
LinkedList<Integer> path = new LinkedList<>();
public void back(int[] nums , int start)
{
// System.out.println("入口start "+ start);
int i;
int length;
length = nums.length;
if(start >= length) return;
// re_list.add(new LinkedList<>(path));
for(i=start;i<length;i++)
{
//路径本身就是具有加减属性的
path.add(nums[i]);
re_list.add(new LinkedList<>(path));
back(nums,i+1);
path.removeLast();
}
}
public List<List<Integer>> subsets(int[] nums)
{
Arrays.sort(nums);
// int i;
// int length = nums.length ;
// for(i=0; i<length; i++)
// {
// System.out.println(nums[i]);
// }
re_list.add(new LinkedList<>(path));
back(nums,0);
return re_list;
}
}
三、运行结果
四、附录
二刷
class Solution
{
List<List<Integer>> re = new LinkedList<>();
List<Integer> path = new LinkedList<>();
public void track(int[] nums, int start)
{
int i;
int length = nums.length;
//if(start == length) re.add(new LinkedList<>(path));
if(start>length) return;
re.add(new LinkedList<>(path));
for(i=start;i<length;i++)
{
path.add(nums[i]);
track(nums,i+1);
path.removeLast();
}
}
public List<List<Integer>> subsets(int[] nums)
{
track(nums,0);
return re;
}
}