2024.4.20力扣每日一题——组合总和

devtools/2024/10/18 12:20:02/

2024.4.20

      • 题目来源
      • 我的题解
        • 方法一 回溯

题目来源

力扣每日一题;题序:39

我的题解

方法一 回溯

以每一个位置开始深搜,直到target等于0或者小于0或者遍历完结束。
关键在于:注意去重 巧妙方法:传入一个index,是上一次遍历元素的位置,控制其不再去遍历前面的元素

时间复杂度:O( n ∗ 2 n n*2^n n2n)。n 个位置每次考虑选或者不选,如果符合条件,就加入答案的时间代价。但是实际运行的时候,因为不可能所有的解都满足条件,递归的时候还会用 target−candidates[idx]≥0进行剪枝,所以实际运行情况是远远小于这个时间复杂度的。
空间复杂度:O(n)

java">class Solution {List<List<Integer>> res;public List<List<Integer>> combinationSum(int[] candidates, int target) {res=new ArrayList<>();List<Integer> path=new ArrayList<>();for(int i=0;i<candidates.length;i++){path.add(candidates[i]);dfs(candidates,target-candidates[i],i,path);path.remove(path.size()-1);}return res;}public void dfs(int[] candidates,int target,int index,List<Integer> path){if(target==0)res.add(new ArrayList<>(path));//后一个条件的前提是candidates数组是升序的,这里是看了官方的题解,感觉默认是有序的if(target<0||target-candidates[index]<0)return ;for(int next=index;next<candidates.length;next++){path.add(candidates[next]);dfs(candidates,target-candidates[next],next,path);path.remove(path.size()-1);}}
}

有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~


http://www.ppmy.cn/devtools/6651.html

相关文章

判断是否闰年

一、闰年的概念和判断逻辑 1、闰年的概念 地球绕太阳公转一圈的时间是365天5小时48分46秒 即365.24219天 0.24219*40.969676 所以&#xff0c;每四年增加一天&#xff0c;以弥补误差 该年是为闰年&#xff0c;该年天数为366,其余年份天数为365 按照每4年添加一天&#xf…

Ubuntu Vs code配置ROS开发环境

文章目录 1.开发环境2.集成开发环境搭建2.1 安装Ros2.2 安装 Vs code2.3 安装vs code 插件 3.Vs code 配置ROS3.1 创建ROS工作空间3.2 从文件夹启动Vs code3.3 使用Vscode 编译ROS 空间3.4 使用Vs code 创建功能包 4.编写简单Demo实例4.1编写代码4.2编译与执行 1.开发环境 系统…

【软件测试】单元测试+集成测试+系统测试

以下是来自“文心一言”搜索的回答 单元测试 单元测试是软件开发中的一种测试方法&#xff0c;用于对软件中的最小可测试单元进行测试。这些最小单元通常是函数、方法或类等代码片段。单元测试的目的是验证每个单元的代码是否按预期工作&#xff0c;确保其功能正确&#xff0…

从三大层次学习企业架构框架TOGAF

目录 前言 掌握TOGAF的三个层次 层次1&#xff1a;怎么学&#xff1f; 层次2&#xff1a;怎么用&#xff1f; 层次3&#xff1a;怎么思&#xff1f; 结束语 前言 对于一名架构师来讲&#xff0c;如果说编程语言是知识库层次中的入门石&#xff0c;那么企业架构框架则相当…

XTuner 微调 LLM:1.8B、多模态、Agent

两种微调范式&#xff1a;增量预训练和指令微调 在大语言模型下游应用中&#xff0c;主要有两种微调范式&#xff1a;增量预训练和指令微调。增量预训练旨在让模型学习特定领域的常识&#xff0c;而不需要有监督标注的数据&#xff1b;指令微调则是通过高质量的对话数据训练模型…

SpringCloud之服务远程调用(OpenFeign)

1.OpenFeign OpenFeign是一个声明式的http客户端&#xff0c;作用是基于SpringMVC的常见注解&#xff0c;实现更便捷的http请求发送 2.OpenFeign使用步骤 &#xff08;1&#xff09;导入依赖坐标 <!--OpenFeign--><dependency><groupId>org.springframewo…

使用Python制作读单词视频(含源码)

文章目录 1. 项目简介2. 项目使用2.1 功能介绍2.2 使用Colab生成视频 3. 项目原理介绍 1. 项目简介 项目源码地址&#xff1a;https://github.com/iioSnail/read_video_generation 我们经常在B站或其他视频网站上看到那种逐条读单词的视频&#xff0c;但他们的视频多多少少和…

Leetcode算法训练日记 | day32

专题九 贪心算法 一、最大子数组和 1.题目 Leetcode&#xff1a;第 53 题 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。子数组是数组中的一个连续部分。 示例 1&…