90.子集II

原题链接:90.子集II

思路:

重点就是去重 也就是同层的去重操作

全代码:

cpp 复制代码
class Solution {
public:
    vector<vector<int>> result;
    vector<int> path;
    
    void backtracking(vector<int>& nums, int startIndex,vector<bool>& used)
    {
        result.push_back(path);
        for(int i = startIndex; i < nums.size(); i++)
        {
            if(i > 0 && nums[i] == nums[i - 1] && used[i - 1] == false)
            {//同一层使用过的值进行跳过
                continue;
            }

            path.push_back(nums[i]);
            used[i] = true;//代表已使用
            backtracking(nums, i + 1, used);
            used[i] = false;
            path.pop_back();

        }

    
    }
    vector<vector<int>> subsetsWithDup(vector<int>& nums) {
        vector<bool> used(nums.size(), false);
        sort(nums.begin(),nums.end());
        backtracking(nums, 0 ,used);
        return result;
    }
};
相关推荐
MoRanzhi120310 小时前
106.正则问题(分治)
python·算法·正则表达式·蓝桥杯·递归·分治算法·字符串处理
yi0112 天前
DAY28: LeetCode 111. 二叉树的最小深度
人工智能·笔记·python·算法·leetcode·二叉树·递归
yi0114 天前
DAY27: LeetCode 110. 平衡二叉树 | 在递归中判断是否平衡
人工智能·笔记·python·算法·leetcode·二叉树·递归
xbzb5 天前
Shell 函数:语法、传参与递归调用一次讲透
shell·递归·函数·调用·传参·递归调用
Tisfy7 天前
LeetCode 0301.删除无效的括号:二进制枚举 / 回溯
算法·leetcode·字符串·题解·回溯·括号匹配·二进制枚举
青柠之夏cc10 天前
递归揭秘:从原理到陷阱
递归·函数·乘
longlongzihan11 天前
回溯法详解:LeetCode 46. 全排列
算法·leetcode·回溯
Logic10113 天前
关于汉诺塔问题的分析
c语言·算法·递归·函数·解题思路·递归函数·汉诺塔问题
UIU11419 天前
递归算法与汉诺塔
c++·学习·算法·c#·递归
-dzk-1 个月前
【回溯】LC 22.括号生成
算法·回溯