2020年9月20日 子集subsets
class Solution {
public List<List<Integer>> subsets(int[] nums) {
}
}
解题思路:
还是前面几天的老办法,递归。
[1,2,3]能够组成的所有组合等于[2,3]能够组成的所有组合+[1]+1和[2,3]能够组成的所有组合的组合。
代码实现:
class Solution {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> list=new LinkedList<>();
if (nums.length==0)
{
List<Integer> nowList=new LinkedList<>();
list.add(nowList);
return list;
}else
{
int[] nowArray=new int[nums.length-1];
System.arraycopy(nums,1,nowArray ,0 ,nums.length-1);
List<List<Integer>> subsets = subsets(nowArray);
int len=subsets.size();
for (int i=0;i<len;i++){
List<Integer> now=new LinkedList<>(subsets.get(i));
now.add(0,nums[0] );
subsets.add(now);
}
return subsets;
}
}
}