leetcode39.组合总和

embedded/2025/1/14 14:23:02/

给你一个 无重复元素 的整数数组 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

思路:跟子集leetcode78.子集-CSDN博客那道题有点像,注意点为为了防止结果重复,每次扩选为在本次数字及本次数字之后的,用index来控制

 List<List<Integer>> list=new ArrayList<>();List<Integer> ret=new ArrayList<>();int sum=0;public List<List<Integer>> combinationSum(int[] candidates, int target) {backTracking(candidates,target,0);return list;}public void backTracking(int[]candidates,int target,int index){if(sum>target)return;else if(sum==target){list.add(new ArrayList<Integer>(ret));return;}for(int i=index;i<candidates.length;i++){if(sum+candidates[i]<=target){ret.add(candidates[i]);sum+=candidates[i];backTracking(candidates,target,i);ret.remove(ret.size()-1);sum-=candidates[i];}}}


http://www.ppmy.cn/embedded/153857.html

相关文章

Debian之Maven安装

本地压缩包安装&#xff08;推荐&#xff09; 下载地址&#xff1a;https://maven.apache.org/download.cgi # 将安装包移动到当前目录 cd /usr/local # && mkdir maven && cd maven # 在线下载&#xff08;https://dlcdn.apache.org/maven/&#xff09; wg…

【pycharm】远程部署失败,查看日志

pycharm 远程部署失败,查看日志 远程一直失败,gateway超时会还知道拉取一份日志: 在./root 下 发现了崩溃日志,启动崩溃了,导致backend一直无法启动。win11就是一直在connect到ubuntu的后端pycharm。。gateway 拉取的日志 我上传的linux版本的pycharm暂时存在dist目录下,…

【Git】分支管理

git 分支管理 在 Git 中&#xff0c;分支合并是一个常见的操作&#xff0c;用于将一个分支的更改集成到另一个分支中。合并后会生成一个新的提交记录&#xff0c;这个过程可以通过多种方式实现。下面详细介绍几种常用的合并方法及其命令。 1. 快进合并 (Fast-Forward Merge) …

麦田物语学习笔记:实现根据物品详情显示

基本流程 1.代码思路 (1)新建ItemTooltip.cs用于控制ItemTooltip(这个是在Hierarchy里的)中的文本内容 回顾一下:对于物品描述(ItemTooltip)的UI有三个部分,第一部分是名字和类型,第二部分是物品详解,第三部分是金币图标以及价值的文本 (2)获取UI中的所有部分,因为item分为可出…

在 Alpine Linux 下通过 Docker 部署 PostgreSQL 服务器

简要介绍 Docker 是一个开源的容器化平台&#xff0c;它使得开发者能够轻松创建、部署和运行应用程序。通过使用 Docker&#xff0c;程序员可以把应用及其所有依赖打包在一个轻量级的容器中&#xff0c;这样可以确保在不同环境中的一致性。PostgreSQL&#xff08;简称 psql&am…

MySQL:内置函数

1.时间函数 获取当前日期 年月日 获取当前的时间 时分秒 获取当前时间戳 自动转化为年月日时分秒 从时间戳截取日期部分 1990-10-1 10天 1990-10-1 - 10分钟 2025-1-11 - 1949-10-1相差多少天 现在的日期和时间 ‘ 案例 创建一个留言表 插入两条数据 查询一下 显示所有留言…

ThreadLocal 的使用场景

在现代电商平台中&#xff0c;ThreadLocal 常用于以下场景&#xff0c;特别是与线程隔离相关的业务中&#xff0c;以提高性能和简化上下文传递。 1. 用户上下文信息管理 场景&#xff1a;在用户发起的每次请求中&#xff0c;需要携带用户 ID、角色、权限等信息&#xff0c;而这…

TypeScript语言的学习路线

TypeScript语言的学习路线 TypeScript&#xff08;TS&#xff09;是由Microsoft开发的一种开源编程语言&#xff0c;是JavaScript的超集&#xff0c;提供了严格的类型检查和基于类的面向对象编程特性。随着前端开发的不断进步&#xff0c;TypeScript逐渐成为了现代前端开发的主…