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

LeetCode 组合总数

39.组合总数

题目描述

给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。

candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。

对于给定的输入,保证和为 target 的不同组合数少于 150 个。

示例 1:

输入:candidates =[2,3,6,7], target =7输出:[[2,2,3],[7]]
解释:
2 和 3 可以形成一组候选,2 + 2 + 3 = 7 。注意 2 可以使用多次。
7 也是一个候选, 7 = 7 。
仅有这两种组合。

示例 2:

输入:candidates = [2,3,5],target = 8
输出:[[2,2,2,2],[2,3,3],[3,5]]

示例 3:

输入:candidates =[2],target = 1
输出:[]

提示:

  • 1 <= candidates.length <= 30
  • 2 <= candidates[i] <= 40
  • candidates 的所有元素 互不相同
  • 1 <= target <= 40

解题思路

不断更新target,当叶子结点<0时,回溯;当叶子结点=0时,加入结果集中,回溯

因为可能出现重复组合,所以此题需要剪枝,每次只选择当前元素位置后的值

在这里插入图片描述

代码

class Solution {
public:vector<vector<int>> combinationSum(vector<int>& candidates, int target) {vector<vector<int>> res;vector<int> temp;int start=0;dfs(candidates,target,res,temp,start);return res;}void dfs(vector<int>& candidates,int target,vector<vector<int>>& res,vector<int>& temp,int start){if(target==0){res.push_back(temp);return;}if(target<0){return;}for(int i=start;i<candidates.size();i++){//为了去重,所以选数时,只选该数后边的temp.push_back(candidates[i]);dfs(candidates,target-candidates[i],res,temp,i);temp.pop_back();}}
};
http://www.dtcms.com/a/323980.html

相关文章:

  • 五种Excel表格导出方案
  • 40.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--扩展功能--集成网关--初始化网关
  • Pytorch深度学习框架实战教程-番外篇05-Pytorch全连接层概念定义、工作原理和作用
  • afsim2.9_使用QtCreator和VSCode编译
  • ShadowKV 机制深度解析:高吞吐长上下文 LLM 推理的 KV 缓存“影子”方案
  • GPT OSS深度解析:OpenAI时隔6年的开源模型,AI民主化的新里程碑?
  • FFmpeg实现音视频转码
  • Java 日常开发笔记(小程序页面交互传参-id)
  • ATF(TF-A)安全通告 TFV-13(CVE-2024-7881)
  • 《从零构建大语言模型》学习笔记4,注意力机制1
  • ubuntu22.04安装autoware.universe
  • 【YOLOv8改进 - C2f融合】C2f融合Outlook Attention:将细粒度特征编码到 token 中, 提高在图像分类和语义分割等任务中的性能
  • Docker Compose 部署高可用 MongoDB 副本集集群(含 Keepalived + HAProxy 负载均衡)
  • 106-基于Flask的重庆充电桩投建数据可视化分析系统
  • Spring Boot WebSocket实时在线人数统计
  • 从onnx模型到om模型的全自动化转化
  • Spring Boot集成WebSocket
  • Vue 3 的编译时优化如何改写 DOM 操作规则
  • ubuntu超简单自动化Vim配置
  • 【嵌入式硬件实例】-555定时器PWM调光电路
  • vue: Module “vue“ has no exported member xxx
  • Dify 从入门到精通(第 26/100 篇):Dify 的知识图谱集成
  • [激光原理与应用-224]:机械 - 机械设计与加工 - 常见的术语以及含义
  • 解决IDEA2024切换窗口后无脑编译重启
  • 论文阅读:Aircraft Trajectory Prediction Based on Residual Recurrent Neural Networks
  • 计算机视觉(CV)——卷积神经网络基础
  • node.js 学习笔记3 HTTP
  • 【Python练习】086. 编写一个函数,实现简单的DHCP服务器功能
  • 如何回收内存对象,有哪些回收算法?
  • 【人工智能99问】BERT的训练过程和推理过程是怎么样的?(24/99)