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

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;
    }
};

相关文章:

  • 重入漏洞EtherStore
  • VSCode 开发 Vue 语法提示
  • python版opencv人脸训练与人脸识别
  • 【Matlab2016】Matlab中文版的下载、安装、激活(不建议安装过高版本!!)
  • 如何创建加载项(1)
  • Git总结
  • 2016年亚太杯APMCM数学建模大赛C题影视评价与定制求解全过程文档及程序
  • WinDbg 远程调试遇到IP为:169.254.xx.xx 的处理
  • 【Linux】操作系统以及虚拟机的安装与配置
  • 容联七陌百度营销通BCP解决方案,让营销更精准
  • 【Linux】【驱动】设备树中设备节点的挂载
  • 电脑msvcp100.dll丢失了怎么办?详细的5个修复方法
  • Maven配置阿里云中央仓库settings.xml
  • 【软件教程】如何用C++检查TCP或UDP端口是否被占用
  • Arrays 中的 asList()方法
  • MS COCO数据集的评价标准以及不同指标的选择推荐(AP、mAP、MS COCO、AR、@、0.5、0.75、1、目标检测、评价指标)
  • Android帧率监测与优化技巧
  • GRS不止局限于纺织行业
  • 安防监控项目---环境配置
  • 浅谈中国汽车充电桩行业市场状况及充电桩选型的介绍
  • 上市不足一年,吉利汽车拟私有化极氪并合并:整合资源,杜绝重复投入
  • 昆廷·斯金纳:作为“独立自主”的自由
  • 胡祥|人工智能时代:文艺评论何为?
  • 马上评|从一个细节看今年五一档电影
  • 国铁集团:铁路五一假期旅客发送量累计已超1亿人次
  • “五一”假期客流增加,多地提升铁路运力并强化服务