90. 子集 II

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

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

示例 1:

复制代码
输入:nums = [1,2,2]
输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]

示例 2:

复制代码
输入:nums = [0]
输出:[[],[0]]

提示:

  • 1 <= nums.length <= 10
  • -10 <= nums[i] <= 10
cpp 复制代码
class Solution {
public:
    vector<vector<int>>res;
    vector<int>path;
    void backtracking(vector<int>& nums,int startindex){
        res.push_back(path);
        if(startindex > nums.size()) return;

        for(int i = startindex;i < nums.size();i++){
            //去重逻辑,树层去重。set,used,i>startindex都可以
            //如果,不能排序或者没有排序,只能用set
            if(i > startindex && nums[i] == nums[i-1]){
                continue;
            }
            else{
                path.push_back(nums[i]);
                backtracking(nums,i+1);
                path.pop_back();
            }
        }
    }
    vector<vector<int>> subsetsWithDup(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        backtracking(nums,0);
        return res;
    }
};
相关推荐
lwf00616411 分钟前
导数学习日记
学习·算法·机器学习
头发够用的程序员1 小时前
从滑动窗口到矩阵运算:img2col算法基本原理
人工智能·算法·yolo·性能优化·矩阵·边缘计算·jetson
武帝为此1 小时前
【数据清洗缺失值处理】
python·算法·数学建模
Halo_tjn2 小时前
Java 基于字符串相关知识点
java·开发语言·算法
念越2 小时前
算法每日一题 Day08|双指针法解决三数之和
算法·力扣
黎阳之光3 小时前
黎阳之光透明管理:视频孪生重构智慧仓储新范式
人工智能·算法·安全·重构·数字孪生
6Hzlia3 小时前
【Hot 100 刷题计划】 LeetCode 199. 二叉树的右视图 | C++ DFS 逆序遍历
c++·leetcode·深度优先
CappuccinoRose4 小时前
回溯法 - 软考备战(四十三)
算法·排列组合·路径·n皇后·子集·解数独·岛屿
AC赳赳老秦4 小时前
OpenClaw进阶技巧:批量修改文件内容、替换关键词,解放双手
java·linux·人工智能·python·算法·测试用例·openclaw
Robot_Nav4 小时前
Shape-Aware MPPI(SA MPPI)算法:基于RC-ESDF的任意形状机器人实时轨迹优化
算法·机器人·sa-mppi