leetcode做题笔记40

给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。

candidates 中的每个数字在每个组合中只能使用 一次 。

注意:解集不能包含重复的组合。 

思路一:回溯

int cmp(const void* a, const void* b){return *(int*)a - *(int*)b;
}int** Result = NULL;
int* rtcolsizes = NULL;
int Result_Index = 0;int Path[30] = {0};
int Path_Index = 0;int* Source = NULL;
int Source_Size = 0;void Back_Track(int target, int idx){if(target == 0){int* temi = (int*)malloc(sizeof(int) * Path_Index);memcpy(temi, Path, Path_Index * sizeof(int));Result[Result_Index] = temi;rtcolsizes[Result_Index] = Path_Index;Result_Index++;return;}for(int i = idx; i < Source_Size; i++){if(i > idx && Source[i] == Source[i - 1]){continue;}if(target - Source[i] < 0){break;}Path[Path_Index] = Source[i];Path_Index++;Back_Track(target - Source[i], i + 1);Path_Index--;}
}int** combinationSum2(int* candidates, int candidatesSize, int target, int* returnSize, int** returnColumnSizes){qsort(candidates, candidatesSize, sizeof(int), cmp);Result = (int**)malloc(sizeof(int*) * 48);rtcolsizes = (int*)malloc(sizeof(int) * 48);Result_Index = 0;Path_Index = 0;Source = candidates;Source_Size = candidatesSize;Back_Track(target, 0);*returnSize = Result_Index;*returnColumnSizes = rtcolsizes;return Result;
}

分析:

该题要求和为target的组合,可先将原数组排序后进行递归回溯处理。将数组中目标数不断减去小于目标数的数,直到等于0时将这些存储到准备好的数组中,再返回数组。实际编写的时候需注意加的数的赋给result的时候要path存储加的数。

总结:

本题主要考察了回溯算法的应用,使用递归将加的组合数找出。

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

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

相关文章

Unity Shader 消融效果

消融效果 消融广泛运用于各种场合&#xff0c;例如 怪物击杀与道具时区&#xff08;原神&#xff09;燃烧 注意&#xff1a;根据噪声图的不同&#xff0c;效果有很大的差异&#xff0c; 第一步&#xff1a;创建着色器 我们要选择Unlit Shader创建 然后定义如下属性 Prop…

Spring MVC 是什么?

一、什么是 Spring MVC&#xff1f; 官方对于 Spring MVC 的描述是这样的&#xff1a; Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning. The formal name, “Spring Web …

C++控制台实现简化版吃鸡游戏

直接上代码 #include <iostream> #include <cstdlib> #include <ctime>// 生成一个随机整数 int randomInt(int min, int max) {return min (std::rand() % (max - min 1)); }int main() {std::srand(static_cast<unsigned int>(std::time(nullptr)…

【教程】查看CPU、GPU架构的拓扑结构和系统信息

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 一些概念 Package&#xff1a;处理器封装。在多处理器系统中&#xff0c;每个物理 CPU 芯片通常被封装在一个单独的封装中&#xff0c;这个封装被称为 Package。一个 Package 可以包含一个或多个物理 CPU 核心。…

一站式解决方案:Qt 跨平台开发灵活可靠

Qt 是一种跨平台开发工具&#xff0c;为开发者提供了一站式解决方案。无论您的项目目标是 Windows、Linux、macOS、嵌入式系统还是移动平台&#xff0c;Qt 都能胜任。这种跨平台的特性不仅节省开支&#xff0c;还推动了战略的快速落地。 适用范围广泛&#xff1a;Qt 可在多种操…

ArgoCD结合Gitlab交付项目到kubernetes集群

ArgoCD结合Gitlab交付项目到kubernetes集群 作者:行癫(盗版必究) 一:环境准备 1.kubernetes集群环境 2.HA_Argocd环境 3.Gitlab集群环境 二:项目配置 1.配置Gitlab 创建仓库,并写入yaml文件,利用yaml构建application;此案例结合了NFS实现持久化存储

平板用的触控笔什么牌子好?ipad第三方电容笔推荐

随着技术的发展&#xff0c;出现了各种各样的平板电容笔。一支好的电容笔&#xff0c;不但可以极大地提升我们的工作效率&#xff0c;还可以极大地提升我们的学习效果。平替的电容笔&#xff0c;无论是在技术方面&#xff0c;还是在质量方面&#xff0c;都还有很大的提升空间&a…

等保工作如何和企业创新业务发展相结合,实现“安全”和“创新”的火花碰撞?

等保工作如何和企业创新业务发展相结合&#xff0c;实现“安全”和“创新”的火花碰撞&#xff1f;在当今数字化浪潮的背景下&#xff0c;企业越来越需要在“安全”和“创新”之间找到平衡点&#xff0c;以实现业务的持续创新和安全的有效保障。等保工作可以为企业提供安全保障…

【阿里云试用计划】免费试用GPU

写在前面&#xff1a;本博客仅作记录学习之用&#xff0c;部分图片来自网络&#xff0c;如需引用请注明出处&#xff0c;同时如有侵犯您的权益&#xff0c;请联系删除&#xff01; 文章目录 前言试用步骤问题No CUDA GPUs are available无故被killed 致谢 前言 算力在深度学习…

【GD32F103】自定义程序库08-DMA+ADC

DMA 自定义函数库说明: 将DMA先关的变量方式在一个机构体中封装起来,主要参数有 dma外设,时钟,通道,外设寄存器地址,数据传输宽度,数据方向,外设是能dma传输使能回调函数,扫描模式中断编号dma中断使能传输完成标志数据存储空间使用一个枚举类型指明每个DMA绑定到那个…

Nodejs 安装之后cmd 输入npm -v 提示error的问题解决

1.问题现象&#xff1a; 安装时候选择&#xff1a; 2. 解决问题 卸载nodejs 删除安装路径下的node_modules, 重新安装 按照下面的选择

上海科技大学智能生活组齐聚合合信息,“沉浸式”体验人工智能产品

近期&#xff0c;上海科技大学组织本科生产业实践-校企联合人才培养活动&#xff0c;30余名学生组成的“智能生活组”实地参访人工智能及大数据科技企业上海合合信息科技股份有限公司&#xff08;简称“合合信息”&#xff09;。本次活动旨在通过项目体验、主题交流&#xff0c…

uniapp 即时通讯开发流程详解

今天我将为您详细介绍UniApp开发中的即时通讯流程。本文将向您展示如何在UniApp中实现即时通讯功能&#xff0c;为您的应用程序增添交互性和实时性。 1. 准备工作 在开始开发之前&#xff0c;确保您已完成以下准备工作&#xff1a; 确保您已经安装好UniApp开发环境&#xff…

RISC-V汇编指令

写在最前面&#xff1a;这一篇是UC Berkeley的CS61C的笔记&#xff0c;根据我自己的理解进行学习记录&#xff0c;其中贴的一些图片来自于课程PPT。 了解汇编之前&#xff0c;我们需要先了解为什么需要汇编&#xff1f;以下是我的理解&#xff1a; 机器执行的命令都是些二进制…

基于jeecg-boot的任务甘特图显示

更多功能看演示系统 gitee源代码地址 后端代码&#xff1a; https://gitee.com/nbacheng/nbcio-boot 前端代码&#xff1a;https://gitee.com/nbacheng/nbcio-vue.git 在线演示&#xff08;包括H5&#xff09; &#xff1a; http://122.227.135.243:9888 基于项目的任务显…

SpringCloud-Alibaba之Sentinel熔断与限流

一、下载安装运行 http://localhost:8080进行访问 登录账号和密码均为sentinel 二、创建工程&#xff0c;并注册到nacos服务中心 依赖spring-cloud-starter-alibaba-nacos-discovery,spring-cloud-starter-alibaba-sentinel sentine-datasource-nacos (持久化)配置文件 se…

python:基于GeoPandas和GeoViews库将GEDI激光高程数据映射到交互式地图

作者:CSDN @ _养乐多_ 本文将介绍 GEDI(Global Ecosystem Dynamics Investigation)激光雷达数据某数据点波形数据提取,并绘制图表,添加其他图表元素并使图表具有交互性。 在本文中,我们将探索如何打开、读取和处理GEDI数据,并利用地理信息处理库GeoPandas和地理空间数…

使用langchain与你自己的数据对话(二):向量存储与嵌入

之前我以前完成了“使用langchain与你自己的数据对话(一)&#xff1a;文档加载与切割”这篇博客&#xff0c;没有阅读的朋友可以先阅读一下&#xff0c;今天我们来继续讲解deepleaning.AI的在线课程“LangChain: Chat with Your Data”的第三门课&#xff1a;向量存储与嵌入。 …

抖音seo账号矩阵系统源码如何开发布局?

目录 一、 抖音SEO账号矩阵系统源码的开发布局步骤如下&#xff1a; 二。 开发部署源码 三、 开发部署功能设计 1. 短视频AI智能创作 2. 托管式账号管理: 3. 数据分析 4. 智能营销获客 四。 抖音seo源码开发部署交付技术文档包含 五。 开发代码展示&#xff1a; 一、 抖…

vuejs源码之模版编译原理

之前我们说过虚拟dom&#xff0c;也就是虚拟dom拿到vnode后所做的事情&#xff0c;而模版编译是如何让虚拟dom拿到vnode。 模版编译的目标就是生成渲染函数&#xff0c;而渲染函数的作用是每次执行它&#xff0c;它就会使用当前最新的状态生成一份新的vnode&#xff0c;然后用…