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;
    }
};
相关推荐
旖-旎2 天前
深搜(二叉树的所有路径)(6)
c++·算法·leetcode·深度优先·递归
khalil10203 天前
代码随想录算法训练营Day-31贪心算法 | 56. 合并区间、738. 单调递增的数字、968. 监控二叉树
数据结构·c++·算法·leetcode·贪心算法·二叉树·递归
kronos.荒4 天前
非递减序列(python)
python·回溯
旖-旎4 天前
深搜(二叉树剪枝)(3)
数据结构·c++·算法·力扣·剪枝·递归
kronos.荒6 天前
回溯(python)
python·回溯
旖-旎6 天前
递归(快速幂)(5)
c++·算法·力扣·递归
旖-旎8 天前
递归(汉诺塔问题)(1)
c++·学习·算法·leetcode·深度优先·递归
kronos.荒8 天前
N皇后问题(python)
python·回溯
kronos.荒8 天前
全排列2(重复元素去重、python)
python·回溯
W230357657312 天前
0-1 背包进阶:回溯法(子集树)+ 分支限界优化 极致详解(C++ 完整实现)
动态规划·回溯·算法设计·0-1背包