本文共 1365 字,大约阅读时间需要 4 分钟。
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/subsets著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
采用回溯法
import java.util.ArrayList;import java.util.List;class Solution { List
> res = new ArrayList<>(); public List
> subsets(int[] nums) { List tmp = new ArrayList<>(); sonNum(nums,0,tmp); return res; } public void sonNum(int[] nums,int start,List tmp){ res.add(new ArrayList<>(tmp)); for(int i=start;i
给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: [1,2,2]输出:[ [2], [1], [1,2,2], [2,2], [1,2], []]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/subsets-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
import java.util.ArrayList;import java.util.Arrays;import java.util.List;class Solution { List
> res = new ArrayList<>(); public List
> subsetsWithDup(int[] nums) { Arrays.sort(nums); List tmp = new ArrayList<>(); sonNum(nums,0,tmp); return res; } public void sonNum(int[] nums,int start,List tmp){ if (!res.contains(tmp)){ res.add(new ArrayList<>(tmp)); } for(int i=start;i