剑指 Offer 39. 组合总和解题思路

news/2024/10/23 7: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

解题思路

用递归实现回溯法,思路见注释

public class Solution 
{//外层列表List<IList<int>> res = new List<IList<int>>();//内层列表List<int> list = new List<int>();public IList<IList<int>> CombinationSum(int[] candidates, int target) {Recall(candidates,target,0);return res;}public void Recall(int[] candidates,int target,int start){if(target < 0) return;//如果当前数组的数已经大于target那么回溯if(target == 0)//满足条件后添加当前内层列表到外层{res.Add(new List<int>(list));//将新建的内层列表传出return;}for(int i = start ; i < candidates.Length ; i++){list.Add(candidates[i]);Recall(candidates,target - candidates[i],start);list.RemoveAt(list.Count - 1);//回溯start++;//下标加一}}
}

http://www.ppmy.cn/news/100784.html

相关文章

Java设计模式系列--单例模式(破坏单例的方法)

原文网址&#xff1a;Java设计模式系列--单例模式(破坏单例的方法)_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍Java破坏单例模式的方法。 单例模式&#xff08;Singleton Pattern&#xff09;是指确保一个类只有一个实例&#xff0c;并提供一个全局访问点。破坏单例模式…

【Bug 全解决】 Java、Spring boot 后端项目 Bug 总结

Bug 收集与总结 本文记录的是 SpringBoot 后端项目使用和运行代码时所遇到的各种问题&#xff0c;全部都已解决&#xff0c;欢迎在评论区补充你遇到的 Bug 哦&#xff01;仅以本文记录学习社区项目时&#xff0c;所遇到的奇奇怪怪的 bug&#xff0c;以及一些很愚蠢的错误&…

c#快速入门

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析2 目录 &#x1f449;&#x1f3fb; c#和c不同之处&#x1f449;&#x1f3fb;程序文件的…

Flink 快速上手,实操记录

目录 Flink 快速上手安装编写 Flink 程序总结 Flink 快速上手 Apache Flink 是一个开源的流处理框架&#xff0c;它提供了高效、可扩展、分布式的数据处理能力。本文将介绍如何快速上手 Flink。 安装 Flink 可以在官网上下载二进制包&#xff0c;也可以通过 Maven 或 Gradle…

海思sdk快速上手

mpp&#xff1a;视频H.264的编码压缩 1.看linux、uboot的文档 2.移植SDK到ubuntu 2.1、三个脚本 source sdk.unpack解压 2.2、osdrv/Makefile和readme make OSDRV_CROSSarm-hisiv300-linux CHIPhi3518ev200 all报错 参考&#xff1a;ubuntu16.04 编译错误: /bin/sh: 1: pushd…

公务员等级划分

您好部级干部&#xff1a;指国家行政机关中最高级别的干部&#xff0c;他们一般负责全国性的职务&#xff0c;一般由国务院任命&#xff0c;担任全国最高政府机构的领导职务。厅级干部&#xff1a;指国家行政机关中级别较高的干部&#xff0c;他们一般负责省级的职务&#xff0…

Vue实现二维码,让你的数据轻松传递

前言 在我们生活中&#xff0c;二维码的应用越来越广泛&#xff0c;特别是在移动互联网的时代&#xff0c;二维码成为了快速传达信息的一种利器。在这篇文章中&#xff0c;我们将会介绍如何在Vue框架下&#xff0c;实现一个具备扫描和查看数据的二维码。 在这一篇文章中&…