组合总和-Leetcode

简介: 组合总和-Leetcode

每日题目

题目:组合总和


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

1 <= candidates[i] <= 200

candidate 中的每个元素都 互不相同

1 <= target <= 500


代码:


class Solution {
    public List<List<Integer>> combinationSum(int[] candidates, int target) {
        List<List<Integer>> res =  new ArrayList<>();
        //如果数组为空,直接返回空结果
        if(candidates==null||candidates.length==0){
            return res;
        }
        //先排序
        Arrays.sort(candidates);
        //dfs
        dfs(candidates,target,0,new ArrayList<>(),res);
        return res;
    }
    public void dfs(int[] candidates,int target ,int start,List<Integer> list,List<List<Integer>> res){
        //如果目标值为0,说明已经找到一个组合,添加到结果集中
        if(target==0){
            res.add(new ArrayList<>(list));
            return;
        }
        //遍历数组
        for (int i = start; i < candidates.length; i++) {
            //如果当前值大于目标值,则不需要继续遍历
            if(candidates[i]>target){
                return;
            }
            list.add(candidates[i]);
            //更新目标值和起始位置
            dfs(candidates,target-candidates[i],i,list,res);
            //回溯,删除当前值
            list.remove(list.size()-1);
        }
    }
}

每日单词

1.png


以上就是组合总和-Leetcode的全部内容

目录
打赏
0
0
0
0
8
分享
相关文章
kde
|
19天前
|
Docker镜像加速指南:手把手教你配置国内镜像源
配置国内镜像源可大幅提升 Docker 拉取速度,解决访问 Docker Hub 缓慢问题。本文详解 Linux、Docker Desktop 配置方法,并提供测速对比与常见问题解答,附最新可用镜像源列表,助力高效开发部署。
kde
10639 82
连续四年,阿里云再获市场份额第一
IDC报告:阿里云再获公有云云工作负载安全市场份额第一!
阿里云百炼全新发布Qwen3-Coder-Plu并开源,重磅升级Qwen3-235B
面向全球的智能编程引擎Qwen3-Coder正式开源!首发旗舰版Qwen3-Coder-480B-A35B-Instruct,拥有480B参数、35B有效参数,基于MoE架构,模型在Agentic Coding、浏览器智能操作及基础编码任务中刷新SOTA纪录,并同步开源完整工具链,包括Qwen Code命令行工具、Claude Code集成、VS Code插件及阿里云平台API支持。Qwen3-Coder支持256K上下文,最高可扩展至1M,适用于仓库级代码理解。通过强化学习技术,实现多轮交互与自主决策,大幅提升代码执行成功率。开发者可通过阿里云百炼平台直接体验或调用API使用。
742 0
云上十五年——弹性计算系列客户故事(一)
技术的价值在于解决真实业务挑战。为记录这十五年的共同成长,阿里云特别推出《云上十五年》客户故事专栏,分享与各行业伙伴的实践成果。新起点开启新征程,阿里云持续突破核心技术,让云计算的“澎湃算力”,持续为各行各业提供“创新动力”。
云上十五年——弹性计算系列客户故事(一)
Windows安装Claude Code
Claude Code 是 Anthropic 推出的代码助手,支持在 Windows 通过 WSL(Windows Subsystem for Linux)运行。本文介绍如何在 Windows 系统中启用 WSL、安装 Ubuntu 子系统、配置 Python 与 Node.js 环境,并最终安装和运行 Claude Code。内容涵盖 WSL 设置、开发工具安装、依赖配置及常见问题解决方法,助你顺利在本地环境中使用 Claude Code 提升编码效率。
751 2
Windows安装Claude Code
抖音集团基于Flink的亿级RPS实时计算优化实践
本文整理自抖音集团在 Flink Forward Asia 2024 的分享,围绕实时计算链路优化,涵盖现状与挑战、通用优化策略、视频与直播场景专项优化及未来规划,旨在提升稳定性、降低资源消耗并支持复杂业务需求。
302 0
抖音集团基于Flink的亿级RPS实时计算优化实践
让复杂 AI 应用构建就像搭积木:Spring AI Alibaba Graph 使用指南与源码解读
通过指南和完整的示例项目,你可以快速掌握 Spring AI Alibaba Graph 的使用方法,并在实际项目中高效地构建智能化应用。
604 22
淘天AB实验分析平台Fluss落地实践:更适合实时OLAP的消息队列
淘天集团数据开发团队基于Fluss构建新一代实时数仓,解决数据消费冗余、探查困难及大State运维难题。Fluss融合列存与实时更新能力,支持列裁剪、KV点查、Delta Join及湖流一体,显著降低IO与计算资源消耗,提升作业稳定性与数据探查效率。已在淘天AB实验平台落地,覆盖搜索、推荐等核心业务,通过618大促验证,实现千万级流量、秒级延迟,资源消耗降低30%,State缩减超100TB。未来将持续深化湖仓架构,拓展AI场景应用。
413 1
淘天AB实验分析平台Fluss落地实践:更适合实时OLAP的消息队列
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问