LeetCode--39.组合总和

前引:明天就考最后一趟考试,最近考试周,我时时断更,从明天开始,就会一直更新了,可以期待一下

解题思路:

        1.获取信息:

                给定一个无重复的整数数组和一个目标值

                从数组中选取任意数量的数字,使它们的和等于目标值,就是一组满足条件的组合

                要找出所有不同的组合,并按任意顺序返回它们

                注:同一个数字可以无限制重复被选取

               额外信息:1 <= candidates.length <= 30   

                                 2 <=candidates[ i ] <= 40 

        2.分析题目:

                不同于之前类似的题目,这次,同一个数字可以无限制重复被选取,就需要你推陈出新了

                由于可以选任意数量的数字为一组,所以,面对可能出现很多种情况的条件下

                我打算使用回溯法,不了解回溯法,可以去看一下38题的题解,有详细讲解哦

                这里你可以思考一下,回溯法该怎么实现,我会在最后一个环节借着代码来讲解我的思路的

        3.示例查验:

                你可以检验一下自己的思路是否正确

        4.尝试编写代码:

                (1)回溯法

                        思路:每次从数组种选取一个数,进入下层递归,终止条件是满足所有数字的和为目标值

                        其实我本来想详细说说我的思路的,但是明天早上,我就要考试了,所以我打算长话短说,委屈你了,你可以看我的代码及其注释来进行理解哦

class Solution {
public:vector<vector<int>> combinationSum(vector<int>& candidates, int target) {sort(candidates.begin(),candidates.end());//数组按从小到大的顺序排列vector<vector<int>>res;//储存结果的容器vector<int>path;//储存每次选取的数字reBack(res,candidates,target,path,0);进入回溯return res;//返回结果}
private:void reBack(vector<vector<int>>&res,vector<int>&candidates,int les,vector<int>&path,int i){if(les==0){//如果选取的所有数字之和等于目标值res.push_back(path);return;}for(int j=i;j<candidates.size();j++){//每次选取数字if(candidates[j]>les)return;//剪枝,如果数字大于目标数的大小,就返回path.push_back(candidates[j]);//选取数字reBack(res,candidates,les-candidates[j],path,j);//进入下层递归path.pop_back();//移除选取的数字}}
};

                (2)优化哦

                        这次,不负众望,带来了优化及优化思路哦

                        优化思路:上面的方法,主要的浪费是在每次选取数字的时候,会进行比较多的无用操作,所以,有没有办法避免呢?

                        当然可以了,我们需要对原数组进行预先的处理,因为数组中的数字最大也就40,数组中的数字的数目最多也就30个

                        所以,你还是看我的代码及注释吧,最近我比较懒惰

class Solution {
public:vector<vector<int>> combinationSum(vector<int>& candidates, int target) {vector<bool>cand(41,false);//对数组进行预处理for(int&c:candidates){cand[c]=true;}vector<int>path;//储存选取的数字vector<vector<int>>res;//储存结果的容器reBack(cand,path,res,target,2);//进入回溯return res;//返回结果}
private:void reBack(vector<bool>&cand,vector<int>&path,vector<vector<int>>&res,int les,int i){if(les==0){//如果选取的数字之和等于目标值res.push_back(path);return;}for(i;i<=les;i++){//数字选取的范围,有效地进行了剪枝操作if(cand[i]){//如果该数字存在path.push_back(i);//选取该数字reBack(cand,path,res,les-i,i);path.pop_back();}}}
};

本次题解就到这里了,希望不挂科吧,每次发帖子感觉就像在跟一个让我很舒服的人交流,这几天没有交流,反而感觉患得患失的,尽量每日一更,每天都来与你交流一下

还是提一嘴,纸上得来终觉浅,绝知此事要躬行哦

祝要考期末的,都不挂科,哈哈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/87168.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/87168.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Visual Studio2022和C++opencv的配置保姆级教程

1.c桌面开发和windows平台开发&#xff08;Visual Studio2022安装时&#xff09; 2.下载OPenCV 3.系统属性→添加环境变量→Path 4.VS2022配置opencv 5.项目→属性→VC目录中的包含目录和库目录 5.项目→属性→VC目录中的包含目录和库目录 包含 目录添加&#xff1a; D:\…

使用Ansible的playbook安装HTTP

实验环境 安装好ansible 一、准备测试服务&#xff08;192.168.10.41&#xff09; 1、安装HTTP服务 dnf -y install httpd 2、启动HTTP服务 systemctl start httpd 3、使用浏览器访问 192.168.10.41 因为开启了防火墙&#xff0c;所有无法访问 4、开放防火墙的80端口 …

V少JS基础班之第六弹

一、 前言 第六弹内容是闭包。 距离上次函数的发布已经过去了一个多月&#xff0c; 最近事情比较多&#xff0c;很少有时间去写文章&#xff0c; 低质量还得保证所以本章放草稿箱一个月了&#xff0c;终于补齐了&#xff0c;其实还有很多细节要展开说明&#xff0c;想着拖太久…

【面板数据】全国高频交易明细数据(2000-2024.7)

中国土地交易市场作为国家宏观调控的重要组成部分&#xff0c;其通过市场机制&#xff0c;使土地使用权在不同主体间流转&#xff0c;将土地资源配置给最具利用效率的部门或企业&#xff0c;提升土地利用率和经济产出。中国土地高频交易明细数据汇集了全国范围内2000-2024年7月…

MongoDB 常用增删改查方法及示例

MongoDB 的增删改查&#xff08;CRUD&#xff09;操作是其核心功能&#xff0c;主要通过 mongo shell 或驱动&#xff08;如 Node.js、Python 等&#xff09;实现。以下是最常用操作的详细说明及示例&#xff08;基于 mongo shell 语法&#xff09;。 ​一、插入操作&#xff…

moodle升级(4.5到5.0)

升级目标 由Moodle 4.5 (Build: 20241129) 升级到Moodle 5.0.1 (Build: 20250629) 参考教程&#xff1a;moodle升级&#xff08;详细版&#xff09;-CSDN博客 操作平台&#xff1a;宝塔 通过宝塔进行备份 备份文件 将/www/wwwroot/moodle 和/www/wwwroot/moodledata 复制…

基于Apache POI实现百度POI分类快速导入PostgreSQL数据库实战

## 引言:POI数据的价值与挑战 POI(Point of Interest)数据作为地理信息系统的核心要素,在智慧城市、位置服务、商业分析等领域具有重要价值。百度POI数据包含了丰富的地点信息(如名称、类别、坐标等),但如何高效处理这些数据并将其导入数据库进行分析是开发者面临的挑战…

linux LAMP 3

[rootcode apache2]# bin/apachectl AH00558: httpd: Could not reliably determine the server’s fully qualified domain name, using fe80::20c:29ff:fe2a:708a. Set the ‘ServerName’ directive globally to suppress this message root192.168.235.5s password:┌─…

UI自动化-Selenium WebDriver

前言 Selenium WebDriver 是 Selenium 项目中最核心、最强大的组件&#xff0c;它是一个用于自动化控制网页浏览器的开源 API&#xff08;应用程序编程接口&#xff09;。 简单来说&#xff0c;Selenium WebDriver 就是一个允许你用编程语言&#xff08;如 Java、Python、C#、…

具身多模态大模型在感知与交互方面的综述

引言在本学期方老师的《机器人与大模型》课上&#xff0c;我首次接触到了关于具身智能的前沿知识&#xff0c;尤其作为课上交互组的成员&#xff0c;从表情识别到语音交互到机械狗的开发实践进行了一些有意思的探索&#xff0c;使我在其中感受到了具身智能的巨大魅力和无限潜力…

UI 设计|审美积累 | 拟物化风格(Skeuomorphism)

拟物化是指把现实世界的材质、光影和结构带到数字界面中。木纹、金属、皮革、纸张等真实物体的质感&#xff0c;被细致地还原到屏幕上&#xff0c;让用户一眼就明白元素的意义与操作方式。它曾是iOS6之前移动端设计的主流风格&#xff0c;也一度被极简风格取代&#xff0c;但在…

EventBridge精准之道:CloudTrail事件 vs. 服务原生事件,我该如何选?

当我们深入使用AWS EventBridge时&#xff0c;常常会发现一个有趣的现象&#xff1a;对于同一个操作&#xff08;比如启动一个EC2实例&#xff09;&#xff0c;EventBridge中似乎会出现两种事件。一种来自CloudTrail&#xff0c;记录了API调用的行为&#xff1b;另一种则直接来…

【算法】动态规划 斐波那契类型: 740. 删除并获得点数

740. 删除并获得点数 中等 题目 给你一个整数数组 nums &#xff0c;你可以对它进行一些操作。 每次操作中&#xff0c;选择任意一个 nums[i] &#xff0c;删除它并获得 nums[i] 的点数。之后&#xff0c;你必须删除 所有 等于 nums[i] - 1 和 nums[i] 1 的元素。 开始你…

AWS MySQL 读写分离配置指南

# AWS JDBC Wrapper读写分离配置实战&#xff1a;Spring Boot MyBatis Plus完整解决方案 ## 前言 在微服务架构中&#xff0c;数据库读写分离是提升系统性能的重要手段。本文将详细介绍如何在Spring Boot项目中使用AWS JDBC Wrapper实现自动读写分离&#xff0c;重点解决MyBat…

opencv检测运动物体

检测到的所有移动物体中轮廓中找到面积最大的轮廓&#xff0c;并绘制这个轮廓的矩形框。 #include <opencv2/opencv.hpp> #include <iostream>int main() {// 打开视频文件或摄像头cv::VideoCapture capture;capture.open("move3.mp4"); // 打开视频文件…

Camera相机人脸识别系列专题分析之十五:人脸特征检测FFD算法之libcvface_api.so算法API详细注释解析

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: Camera相机人脸识别系列专题分析之十五:人脸特征检测FFD算法之libcvface_api.so算法API详细注释解析 目录 一、libcvface_api.so算法API详细注释解析

图像擦除论文-2:SmartEraser、Erase Diffusion、OmniEraser

图像生成模型应用系列——图像擦除&#xff1a; 图像擦除论文-1&#xff1a;PixelHacker、PowerPanint等 图像擦除论文-2&#xff1a;擦除类型数据集构建(1) Erase Diffusion Erase Diffusion: Empowering Object Removal Through Calibrating Diffusion Pathways https://git…

九识无人车陕西运营中心展厅启幕 打造智能城配物流新标杆

7月1日&#xff0c;九识无人车陕西运营中心展厅正式开业&#xff0c;全国业务版图再添重要一子。这座展厅是九识在陕西省的首家展厅&#xff0c;由九识第一位正式提车的客户、首位代理商伙伴孙朋奇先生打造。展厅集产品展示与技术体验于一体&#xff0c;成为西北地区城配领域自…

AI智能体|扣子(Coze)搭建【沉浸式历史故事解说视频】工作流

主包讲解历史对我们的好处&#xff0c;纯个人观点&#xff01; 这个世界是存在一些规律的&#xff0c;很多东西并不能够通过自己的聪明去创新&#xff0c;去改变的。 无论你怎么样创新&#xff0c;你都会回到哪个规律中去&#xff0c;比如很多人做一些商业模式的创新&#xff0…

Softhub软件下载站实战开发(十):实现图片视频上传下载接口

文章目录 Softhub软件下载站实战开发&#xff08;十&#xff09;&#xff1a;实现图片视频上传下载接口 &#x1f5bc;️&#x1f3a5;系统架构图核心功能设计 &#x1f6e0;️1. 文件上传流程2. 关键技术实现2.1 雪花算法2.2 文件校验机制 ✅2.3 文件去重机制 &#x1f50d;2.…