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

LeetCode:39. 组合总和

跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的!
代码随想录

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
输出: []

本题里面candidates是可以重复的,在进入递归函数的时候传递的参数是i,上一题不能重复,传递的是i+1

	public List<List<Integer>> combinationSum(int[] candidates, int target) {Arrays.sort(candidates);List<List<Integer>> res = new ArrayList<>();backtracking(candidates, target, 0, 0, new ArrayList<>(), res);return res;}private void backtracking(int[] candidates, int target, int index, int sum, List<Integer> path,List<List<Integer>> res) {if (sum == target) {res.add(new ArrayList<>(path));return;}for (int i = index; i < candidates.length; i++) {if (sum + candidates[i] > target)break;path.add(candidates[i]);// 注意因为数字可以重复,所以递归函数中传递的还是ibacktracking(candidates, target, i, sum + candidates[i], path, res);path.removeLast();}}
http://www.lryc.cn/news/520645.html

相关文章:

  • SOLID原则学习,开闭原则(Open Closed Principle, OCP)
  • Unreal Engine 5 C++ Advanced Action RPG 七章笔记
  • 自动连接校园网wifi脚本实践(自动网页认证)
  • HTTP/HTTPS ⑤-CA证书 || 中间人攻击 || SSL/TLS
  • traceroute原理探究
  • 50_Lua垃圾回收
  • Git-2-:Cherry-Pick 的使用场景及使用流程
  • 【C++】21.map和set的使用
  • burpsiute的基础使用(2)
  • ElasticSearch 同义词匹配
  • linux RT-Preempt spin lock实现
  • PySpark广播表连接解决数据倾斜的完整案例
  • Chromium CDP 开发(十二):为自己的Domain建立custom_config.json
  • 【Vue】全局/局部组件使用流程(Vue2为例)
  • Vue.js组件开发详解
  • 解决:ubuntu22.04中IsaacGymEnv保存视频报错的问题
  • 深度学习camp-第J7周:对于ResNeXt-50算法的思考
  • java: 错误: 无效的源发行版:17解决办法
  • Docker 安装开源的IT资产管理系统Snipe-IT
  • Go语言封装加解密包(AES/DES/RSA)
  • sql server 对 nvarchar 类型的列进行 SUM() 运算
  • java中json字符串键值获取
  • MPLS原理及配置
  • 口碑很好的国产LDO芯片,有哪些?
  • 【流程设计】类似钉钉的流程设计功能样式demo
  • ChatGPT入门之文本情绪识别:先了解LSTM如何处理文字序列
  • 测试开发之面试宝典
  • 399. 除法求值【 力扣(LeetCode) 】
  • 算法日记1:洛谷p2678跳石头(二分答案)
  • Unity shader中真的可以动态关闭Stencil Test吗?