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

leetcode_39 组合总和

1. 题意

给定一个数组,和一个目标值;求得所有数组中所有和为目标值的元素序列。

组合总数

2. 题解

回溯列举每一个可能的序列,注意去重。

2.1 我的解法
class Solution {
public:
    void gen(vector<vector<int>> &ans,const vector<int> &candidates, vector<int> &seq, int target)
    {
        if (target == 0) {
            ans.push_back(seq);
            return ;
        }
        if ( target < 0)
            return ;

        int sz = candidates.size();
        for ( int i = 0; i < sz; ++i) {
            if ( !seq.empty() &&candidates[i] < seq[seq.size() - 1])
                continue;
            
            seq.push_back(candidates[i]);
            gen(ans, candidates, seq, target - candidates[i]);
            seq.pop_back();
        }
    }


    vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
        
        vector<vector<int>> ans;
        vector<int> one;
        sort(candidates.begin(), candidates.end());
        gen(ans, candidates, one, target);

        return ans;
    }
};
2.2 另一种可能
class Solution {
public:
    void gen(vector<vector<int>> &ans,const vector<int> &candidates, vector<int> &seq, 
        int idx, int target)
    {
        if (target == 0) {
            ans.push_back(seq);
            return ;
        }
        if ( target < 0)
            return ;

        int sz = candidates.size();
        for ( int i = idx; i < sz; ++i) {
            
            
            seq.push_back(candidates[i]);
            gen(ans, candidates, seq, i, target - candidates[i]);
            seq.pop_back();
        }
    }


    vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
        
        vector<vector<int>> ans;
        vector<int> one;
        sort(candidates.begin(), candidates.end());
        gen(ans, candidates, one, 0, target);

        return ans;
    }
};

http://www.kler.cn/a/106418.html

相关文章:

  • 职场汇报技巧:选择合适的汇报形式与提供数据依据
  • 网络学习第四篇
  • Spring:bean的配置
  • 部署Apache Doris
  • ADC输出码和输入电压转换关系
  • 学习rust语言宏之macro_rules!
  • J2EE项目部署与发布(Windows版本)
  • windows 设置nginx、redis、jar包开机自启、mysql自动备份
  • cleanmymacX4.14免费版mac清除浏览器缓存软件
  • Ocelot简易教程目录
  • 大数据Flink(一百零二):SQL 聚合函数(Aggregate Function)
  • 使用Selenium和Java编写爬虫程序
  • Sql Server中的表组织和索引组织(聚集索引结构,非聚集索引结构,堆结构)
  • Python----break关键字对while...else结构的影响
  • 【软考系统架构设计师】2023年系统架构师冲刺模拟习题之《软件工程》
  • oracle19c配置驱动
  • DoLa:对比层解码提高大型语言模型的事实性
  • 第三篇:实践篇 《使用Assembler 实现图片任意切割功能》
  • 企业信息集成
  • 36基于matlab的对分解层数和惩罚因子进行优化
  • Tomcat的动静分离
  • spring监听请求执行结束,移除当前ThreadLocal数据两种方法
  • CFD模拟仿真理论知识:流体仿真应用
  • tmux和vim
  • InstructionGPT
  • Chimera:混合的 RLWE-FHE 方案