LeetCode : 78. Subsets 子集 clone 爱被打了一巴掌 2021-06-24 16:11 329阅读 0赞 **试题** Given a set of distinct integers, nums, return all possible subsets (the power set). Note: The solution set must not contain duplicate subsets. Example: Input: nums = \[1,2,3\] Output: \[ \[3\], \[1\], \[2\], \[1,2,3\], \[1,3\], \[2,3\], \[1,2\], \[\] \] **代码** 有点类似动归思想,我们可以考虑在不加入当前值所有组成的子集,那么在考虑当前值时,只需要把前面子集和当前值结合就形成了包含当前值的子集。 注意点就是二维数组get的是List对象,需要强转,然后clone后是object对象,又需要强转。 class Solution { public List<List<Integer>> subsets(int[] nums) { List<List<Integer>> out = new ArrayList<List<Integer>>(); out.add(new ArrayList<Integer>()); for(int n : nums){ int len = out.size(); for(int i=0; i<len; i++){ ArrayList<Integer> cc = (ArrayList)((ArrayList)out.get(i)).clone(); cc.add(n); out.add(cc); } } return out; } }
还没有评论,来说两句吧...