当前位置: 首页 > news >正文

力扣-回溯-40 组合总和Ⅱ

思路

需要实现树枝层面的去重,利用use数组来判别,如果前一个节点已经使用了,说明这是在往深处遍历了,允许重复,如果前一个节点没有使用且值相同的话,说明是在树枝上重复了

代码

class Solution {
public:
    vector<int> path;
    vector<bool> used;
    vector< vector<int>> result;
    int curSum;
    void backtracking(vector<int>& candidates, int target, int startIndex){
        if(curSum > target) return;
        if(curSum == target){
            result.push_back(path);
            return;
        }
        
        for(int i = startIndex; i < candidates.size(); i++){
            if(i > 0 && candidates[i] == candidates[i-1] && !used[i-1]){
                continue;
            }
            used[i] = true;
            path.push_back(candidates[i]);
            curSum += candidates[i];
            backtracking(candidates, target, i+1);
            curSum -= candidates[i];
            path.pop_back();
            used[i] = false;
        }
    }
    vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {
        sort(candidates.begin(), candidates.end());
        for(int i = 0; i < candidates.size(); i++){
            used.push_back(false);
        }
        backtracking(candidates, target, 0);
        return result;
    }
};

相关文章:

  • 进制转换及C语言中进制转换方法
  • Git中revert和reset区别?
  • 如何将MySQL数据库迁移至阿里云
  • Pipeline 获取 Jenkins参数
  • 二叉树(数据结构)
  • 第5章:在LangChain中如何使用AI Services
  • 45.日常算法
  • 【算法通关村 Day6】二叉树层次遍历
  • Leetcode 76 Minimum Window Substring
  • 哈希表(概念)c++
  • 数据结构——模拟栈例题B3619
  • ShardingSphere 数据库中间件【详解大数据量下分库分表,读写分离,主从同步,以及ShardingSphere-JDBC使用,附有示例+代码】
  • 简单工厂模式 (Simple Factory Pattern) 在Spring Boot 中的应用
  • 机器学习实战(10):深度学习初探——卷积神经网络(CNN)
  • OpenGL(2)基于Qt做OpenGL开发
  • 深⼊理解指针(1)
  • 电脑想安装 Windows 11 需要开启 TPM 2.0 怎么办?
  • 从零开始学习PX4源码9(部署px4源码到gitee)
  • 低代码表单引擎刷新机制
  • Redis 存在线程安全问题吗?为什么?
  • 企业做响应式网站好吗/百度优化怎么做
  • 网站生鲜建设市场分析/关键词查询网站
  • 网站建设百家号/网络推广外包公司哪家好
  • 做物流网站费用/长沙有实力seo优化公司
  • 怎么制作自己的免费网站/如何找到网络公关公司
  • 个人设计师网站 青春/谷歌搜索引擎