package huisu; import java.util.ArrayList; import java.util.List; /** * 幂集。编写一种方法,返回某集合的所有子集。集合中不包含重复的元素。 说明:解集不能包含重复的子集。 */ /** * 回溯法依次追加,1,1 2,1 2 3,移除3,i依旧不小于length,继续移除,变成1,start变成2,1 3,2 ,2 3, 3 * */ public class miji { public static void main(String[] args) { int []nums={1,2,3}; List<List<Integer>> list=subsets(nums); int x=0; } public static List<List<Integer>> subsets(int[] nums) { if(nums==null||nums.length==0){ return null; } List<List<Integer>> list=new ArrayList<>(); List<Integer> result=new ArrayList<>(); helper(list,result,nums,0); return list; } public static void helper(List<List<Integer>> list,List<Integer> result,int []nums,int start){ list.add(new ArrayList<>(result)); for(int i=start;i<nums.length;i++){ result.add(nums[i]); helper(list,result,nums,i+1); result.remove(result.size()-1); } } }