当前位置: 首页 > 图灵资讯 > 技术篇> LeetCode面试题:子集 II

LeetCode面试题:子集 II

来源:图灵教育
时间:2023-04-29 09:30:30

  1.简述:

  给你一个整数数组 nums ,它可能包含重复元素,请返回所有可能的子集(幂集)。

  解集 不能 包括重复的子集。回收解集中,子集可按 任意顺序 排列。

  示例 1:

  输入:nums = [1,2,2]

  输出:[[],[1],[1,2],[1,2,2],[2],[2,2]

  示例 2:

  输入:nums = [0]

  输出:[[],[0]

  2.实现代码:class Solution { List t = new ArrayList(); List> ans = new ArrayList>(); public List> subsetsWithDup(int[] nums) { Arrays.sort(nums); int n = nums.length; for (int mask = 0; mask < (1 << n); ++mask) { t.clear(); boolean flag = true; for (int i = 0; i < n; ++i) { if ((mask & (1 << i)) != 0) { if (i > 0 && (mask >> (i - 1) & 1) == 0 && nums[i] == nums[i - 1]) { flag = false; break; } t.add(nums[i]); } } if (flag) { ans.add(new ArrayList(t)); } } return ans; }}