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

代码随想录算法训练营Day22 | Leetcode 77 组合 Leetcode 216 组合总和Ⅲ Leetcode17 电话号码的字母组合

前言

回溯算法中递归的逻辑不重要,只要掌握回溯的模板以及将问题转化为树形图,整个问题就很好解决了,比二叉树简单。

 Leetcode 77 组合

题目链接:77. 组合 - 力扣(LeetCode)

代码随想录题解:代码随想录 (programmercarl.com)

思路:套回溯的模板,终止条件是path==k。然后将题目描述的组合逻辑想象成树形结构

代码:

class Solution {
public:vector<int> path;vector<vector<int>>res;void backtracking(int n,int k, int index){if(path.size()==k)//终止条件{res.push_back(path);return;}for(int i=index;i<=n;i++)树形结构逻辑{path.push_back(i);backtracking(n, k, i+1);path.pop_back();回溯}return;}vector<vector<int>> combine(int n, int k) {backtracking(n, k, 1);return res;}
};

Leetcode 216 组合总和Ⅲ

题目链接:216. 组合总和 III - 力扣(LeetCode)

代码随想录题解:代码随想录 (programmercarl.com)

思路:这个题和上一道题唯一的区别就是终止条件加了一个和等于目标值,树形结构基本没变

代码:

class Solution {
public:vector<int> path;vector<vector<int>>res;int sum=0;void backtracking(int k,int n,int index){if(sum==n&&path.size()==k)//终止条件{res.push_back(path);return;}for(int i=index;i<=9;i++)树形结构逻辑{path.push_back(i);sum+=i;backtracking(k, n, i+1);sum-=i;//回溯path.pop_back();}return;}    vector<vector<int>> combinationSum3(int k, int n) {backtracking(k, n, 1);return res;}
};

Leetcode17 电话号码的字母组合

题目链接:17. 电话号码的字母组合 - 力扣(LeetCode)

代码随想录题解:代码随想录 (programmercarl.com)

思路:这道题目的终止条件和上面三道题几乎一样,只不过树形逻辑要通过一个二维字符串数组做一个映射。

代码:

class Solution {
public:string letterMap[10] = {"", // 0"", // 1"abc", // 2"def", // 3"ghi", // 4"jkl", // 5"mno", // 6"pqrs", // 7"tuv", // 8"wxyz", // 9};string path;vector<string> res;void backtracking(string a,int index){if(path.size()==a.size())//终止条件{res.push_back(path);return;}int digit=a[index]-'0';//映射string letter=letterMap[digit];for(int i=0;i<letter.size();i++)//树形结构逻辑{path.push_back(letter[i]);backtracking(a, index+1);path.pop_back();//回溯}return;}vector<string> letterCombinations(string digits) {if(digits.size()==0){return res;}backtracking(digits, 0);return res;}};

总结

求解回溯模板需要想好终止条件以及树形逻辑的代码编写,不需要仔细思考递归逻辑,相比于二叉树的各种遍历简单许多。

相关文章:

代码随想录算法训练营Day22 | Leetcode 77 组合 Leetcode 216 组合总和Ⅲ Leetcode17 电话号码的字母组合

前言 回溯算法中递归的逻辑不重要&#xff0c;只要掌握回溯的模板以及将问题转化为树形图&#xff0c;整个问题就很好解决了&#xff0c;比二叉树简单。 Leetcode 77 组合 题目链接&#xff1a;77. 组合 - 力扣&#xff08;LeetCode&#xff09; 代码随想录题解&#xff1a;…...

【微信小程序实战教程】之微信小程序中的 JavaScript

微信小程序中的 JavaScript 微信小程序的业务逻辑都是通过JavaScript语言来实现的&#xff0c;本章我们将详细的讲解JavaScript的基本概念&#xff0c;以及在小程序中如何使用JavaScript语言。JavaScript是一种轻量的、解释型的、面向对象的头等函数语言&#xff0c;是一种动态…...

K-近邻算法(一)

一、 K- 近邻算法 (KNN) 概念 1.1 K- 近邻算法 (KNN) 概念 K Nearest Neighbor 算法⼜叫 KNN 算法&#xff0c;这个算法是机器学习⾥⾯⼀个⽐较经典的算法&#xff0c; 总体来说 KNN 算法是相对⽐ 较容易理解的算法 定义 : 如果⼀个样本在特征空间中的k 个最相似 ( 即特征空间…...

从零开始之AI视频制作篇

从零开始之AI视频制作篇 文章目录 从零开始之AI视频制作篇前言一、工具列表二、成片展示三、制作流程1、获取图片素材2、图片生成视频2.1 Runway操作流程 3、文本生成语音3.1 Fish Audio操作流程 4、视频剪辑4.1 音频素材4.2 字幕生成 四、Runway提示词参考&#xff1a;参考 前…...

Java之TCP编程综合案例

1.反转案例 搭建一个TCP客户端&#xff0c;从键盘录入整行数据&#xff08;遇到quit结束录入&#xff09;然后发送给服务器&#xff0c;再接收服务器返回的数据并输出。 package com.briup.chap12;public class Test064_ReversalClient {public static void main(String[] ar…...

【数据分析---Pandas实战指南:精通数据查询、增删改操作与高效索引和列名操作管理】

前言&#xff1a; &#x1f49e;&#x1f49e;大家好&#xff0c;我是书生♡&#xff0c;本阶段和大家一起分享和探索数据分析&#xff0c;本篇文章主要讲述了&#xff1a;数据查询操作&#xff0c;数据增删改操作&#xff0c;索引和列名操作等等。欢迎大家一起探索讨论&#x…...

Spring Cloud全解析:注册中心之Eureka服务获取和服务续约

服务获取和服务续约 eureka客户端通过定时任务的方式进行服务获取和服务续约&#xff0c;在com.netflix.discovery.DiscoveryClient类中&#xff0c;启动了两个定时任务来进行处理 private void initScheduledTasks() {// 是否需要拉取if (clientConfig.shouldFetchRegistry(…...

三相整流电路交流侧谐波仿真分析及计算

一、三相桥式全控整流电路和功率因数测量电路SIMULINK 模型 如图4-1&#xff0c;根据高频焊机的主电路机构和工作原理&#xff0c;可将高频焊机三相整流部分等效为阻感负载的三相桥式全控整流电路模型&#xff0c;其由三相交流电压源、三相晶闸管整流桥、同步六脉冲触发器和阻感…...

了解Java中的反射,带你如何使用反射

反射的定义 反射&#xff08;Reflection&#xff09;是Java的一种强大机制&#xff0c;它允许程序在运行时动态地查询和操作类的属性和方法。通过反射&#xff0c;Java程序可以获取类的信息&#xff0c;比如类的名称、方法、字段&#xff0c;以及可以动态地创建对象、调用方法…...

【c++】基础知识——快速入门c++

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;C 目录 前言 一、手搓一个Hello World 二、命名空间namespace 1.命名空间的定义 2.命名空间的使用 3.命名空间补充知识 三、c中的输入和输出 四、缺省参…...

AI学习记录 - 自注意力机制的计算流程图

过段时间解释一下&#xff0c;为啥这样子计算&#xff0c;研究这个自注意力花了不少时间&#xff0c;网上很多讲概念&#xff0c;但是没有具体的流程图和计算方式总结…...

JavaScript快速入门,满满干货总结,快速掌握JS语法,DOM,BOM,事件

目录 一. JavaScript、HTML、CSS简介 1.1 HTML简介和举例说明 1.2 CSS简介和举例说明 1.3 JavaScript 简介和举例说明 二. JavaScript 基本语法 2.1 变量类型和定义方式 2.2 逻辑运算符&#xff0c;比较运算符 2.3 流程控制&#xff0c;if&#xff0c;if...else...&…...

【C++】C++入门基础【类与对象】

目录 1.类 1.1类的定义 1.2struct 与 class对比 2.访问限定符 3. 类域 4.实例化 5.存储大小----内存对齐 6.this指针 1.类 1.1类的定义 class作为类的关键字&#xff0c;后面跟的是类的名字&#xff0c;如Stack&#xff0c;{}中的为类的主体&#xff0c;类定义结束时…...

Qt | QScatterSeries 散点图

点击上方"蓝字"关注我们 01、QScatterSeries QScatterSeries 的类,它将代表散点图中的一个系列。这个类将包含数据点、颜色和样式等属性,以及用于绘制散点图的方法。 02、main.cpp #include <QtWidgets/QApplication>#include <QtWidgets/QMainWindow…...

无缝协作的艺术:Codigger 视频会议(Meeting)的用户体验

在当今数字化的时代&#xff0c;远程协作已经成为工作和学习中不可或缺的一部分。然而&#xff0c;远程协作也面临着诸多挑战&#xff0c;如沟通不畅、信息同步不及时、协作工具的复杂性等。而 Codigger 视频会议&#xff08;Meeting&#xff09;作为一款创新的工具&#xff0c…...

C基础练习(学生管理系统)

1.系统运行&#xff0c;打开如下界面。列出系统帮助菜单&#xff08;即命令菜单&#xff09;&#xff0c;提示输入命令 2.开始时还没有录入成绩&#xff0c;所以输入命令 L 也无法列出成绩。应提示“成绩表为空&#xff01;请先使用命令 T 录入学生成绩。” 同理&#xff0c;当…...

网络安全抓包封包WEB

目录 1.抓包 1. 网络故障排除 应用 意义 2. 网络安全监控 应用 意义 3. 性能优化 应用 意义 4. 协议分析与开发 应用 意义 5. 数据分析与合规性审计 应用 意义 抓包工具 总结 2.抓包的应用对象 1. 网络设备 路由器和交换机 防火墙和入侵检测系统&#xff…...

Spring Boot - 在Spring Boot中实现灵活的API版本控制(上)

文章目录 为什么需要多版本管理&#xff1f;在Spring Boot中实现多版本API的常用方法1. URL路径中包含版本号2. 请求头中包含版本号3. 自定义注解和拦截器 注意事项 为什么需要多版本管理&#xff1f; API接口的多版本管理在我们日常的开发中很重要&#xff0c;特别是当API需要…...

普中51单片机:DS18B20温度传感器操作指南(十三)

文章目录 引言电路图引脚讲解初始化时序写时序读时序温度变换温度读取完整代码 引言 DS18B20是一款单总线接口的数字温度传感器&#xff0c;仅需一个IO口即可实现数据通信。这里只对如何简单操作开发板的DS1802进行讲解&#xff0c;关于DS18B20温度传感器的详细操作原理&#…...

【网络】网络的发展历程及其相关概念

1.什么是网络 计算机网络是指将一群具有独立功能的计算机通过通信设备以及传输媒体被互联起来的&#xff0c;在通信软件的支持下&#xff0c;实现计算机间资源共享、信息交换或协同工作的系统。计算机网络是计算机技术与通信技术紧密结合的产物&#xff0c;两者的迅速发展渗透形…...

SIwave串扰分析保姆级教程:从Allegro文件导入到结果解读,手把手教你排查PCB信号问题

SIwave串扰分析实战指南&#xff1a;从Allegro文件导入到精准定位信号问题 在高速PCB设计中&#xff0c;串扰问题如同电路板上的"隐形杀手"&#xff0c;往往在原型测试阶段才暴露出信号完整性问题。本文将带您深入掌握SIwave这一专业工具&#xff0c;从零开始构建完整…...

Fish Speech 1.5新手必看:一键部署,轻松实现文本转语音

Fish Speech 1.5新手必看&#xff1a;一键部署&#xff0c;轻松实现文本转语音 1. 认识Fish Speech 1.5 Fish Speech 1.5是由Fish Audio开源的新一代文本转语音&#xff08;TTS&#xff09;模型&#xff0c;它基于LLaMA架构与VQGAN声码器&#xff0c;支持零样本语音合成。这意…...

SEO_2024年最新SEO实战方法,让你的流量翻倍

2024年最新SEO实战方法&#xff0c;让你的流量翻倍 在数字化时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已经成为了每一个网站、博客和在线业务不可或缺的一部分。尤其在2024年&#xff0c;随着搜索引擎算法的不断更新&#xff0c;SEO实战方法也需要不断调整。本…...

Phi-4-mini-reasoning模型微调入门:使用自有数据提升领域推理能力

Phi-4-mini-reasoning模型微调入门&#xff1a;使用自有数据提升领域推理能力 1. 为什么需要微调推理模型 在实际业务场景中&#xff0c;通用大模型虽然具备强大的推理能力&#xff0c;但在特定领域的表现往往不尽如人意。比如在法律条文解读或医疗诊断建议这类专业领域&…...

百台AGV如何协同?揭秘基于树莓派CM5机器人控制器的调度黑科技

在智能仓储的繁忙战场上&#xff0c;AGV&#xff08;自动导引运输车&#xff09;如同不知疲倦的“搬运工”&#xff0c;穿梭于货架之间。但当“搬运工”从几个变成几十个、上百个时&#xff0c;问题就来了&#xff1a;如何让它们井然有序&#xff0c;不堵车、不撞车、不“摸鱼”…...

Janus-Pro-7B企业应用:制造业设备图片故障标注+维修建议生成

Janus-Pro-7B企业应用&#xff1a;制造业设备图片故障标注维修建议生成 1. 引言&#xff1a;当AI“老师傅”走进工厂车间 想象一下这个场景&#xff1a;工厂里一台关键设备突然发出异响&#xff0c;操作工赶紧用手机拍下照片&#xff0c;上传到一个系统。几秒钟后&#xff0c…...

深度解析:如何高效使用开源虚拟机检测工具VMDE实现系统环境识别

深度解析&#xff1a;如何高效使用开源虚拟机检测工具VMDE实现系统环境识别 【免费下载链接】VMDE Source from VMDE paper, adapted to 2015 项目地址: https://gitcode.com/gh_mirrors/vm/VMDE 虚拟机检测工具VMDE是一款专业的开源工具&#xff0c;专门用于精确识别系…...

Playwright vs Selenium:从CDP底层视角看自动化测试框架的性能差异

Playwright vs Selenium&#xff1a;从CDP底层视角看自动化测试框架的性能差异 在当今快速迭代的软件开发周期中&#xff0c;自动化测试已成为保障产品质量的关键环节。随着Web应用复杂度不断提升&#xff0c;传统的基于UI操作的测试框架逐渐暴露出性能瓶颈和功能局限性。本文将…...

UDOP-large保姆级教程:手把手教你提取英文论文标题与摘要

UDOP-large保姆级教程&#xff1a;手把手教你提取英文论文标题与摘要 1. 引言&#xff1a;为什么选择UDOP-large处理英文论文 作为一名经常需要阅读大量英文文献的研究人员&#xff0c;我深知从PDF论文中提取标题和摘要的繁琐。传统方法要么需要手动复制粘贴&#xff0c;要么…...

OpenClaw文件管理:Qwen3-4B驱动的智能归类与重命名

OpenClaw文件管理&#xff1a;Qwen3-4B驱动的智能归类与重命名 1. 为什么需要智能文件管理 每次打开电脑&#xff0c;看到满屏杂乱无章的下载文件夹&#xff0c;我的强迫症都要发作一次。从项目文档、会议录音到临时截图&#xff0c;所有文件都堆在同一个目录下&#xff0c;找…...