代码随想录训练营第二十二天 77组合

第一题:

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

思路:

经典的回溯模板题:

终止条件,当中间变量用来存储单个结果的大小等于k,则将中间变量存放到结果数组中。

一个for循环横向遍历,递归为纵向遍历。

递归后要进行回溯。

代码如下:

class Solution {
public:vector<vector<int>> combine(int n, int k) {backtracking(n, k, 1);return res;}
private:vector<vector<int>> res;vector<int> path;void backtracking(int n, int k, int startIndex){if(path.size() == k){res.push_back(path);return;}for(int i = startIndex; i <= n; i++){path.push_back(i);backtracking(n, k, i + 1);path.pop_back();}}
};

第二题:

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

思路:

同样的回溯模板题:

需要用一个sum来记录当前所有元素加起来的值是多少,然后和n进行比较即可。同时需要一个path来记录单个组合。

回溯的时候单个组合要pop_back(),sum要pop掉的那个值。

代码如下:

class Solution {
public:vector<vector<int>> combinationSum3(int k, int n) {backtracking(k, n, 0, 1);return res;}
private:vector<vector<int>> res;vector<int> path;void backtracking(int k, int n, int sum, int startIndex){if(path.size() == k && sum == n){res.push_back(path);return;}for(int i = startIndex; i <= 9; i++){path.push_back(i);sum += i;backtracking(k, n, sum, i + 1);sum -= i;path.pop_back();}}
};

第三题:

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

思路:

这题是有思路但是写不出来。

for循环遍历的是字符串中每个数字对应的英文字母。

递归是为了找到下一个位置的数字对应的英文字母。

需要用Index来指向当前遍历到字符串的哪个位置。在递归的时候+1表示遍历到下一个位置。

本题需要用一个string数组来记录每个数字对应的字符串。注意0和1下标对应的字符串为空。从2开始才有字符串。

终止条件:

中间变量的大小等于输入字符串的大小则存放入res数组中。

先将输入字符串的字符转换为数字。然后在找到数字对应的字符串后进行for循环。

最后就是进行递归和回溯。

代码如下:

class Solution {
public:vector<string> letterCombinations(string digits) {if(digits.size() == 0) return {};backtracking(digits, 0);return res;}
private:const string lettermap[10] = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz",};vector<string> res;string s;void backtracking(string digits, int index){if(s.size() == digits.size()){res.push_back(s);return;}int num = digits[index] - '0';string letter = lettermap[num];for(int i = 0; i < letter.size(); i++){s += letter[i];backtracking(digits, index + 1);s.pop_back();}}
};

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

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

相关文章

ATA-7025:高压放大器的原理是怎样的

高压放大器是一种电子器件&#xff0c;主要用于将输入信号的电压放大到更高的水平。它在许多领域中都有重要的应用&#xff0c;包括医学影像设备、科学研究装置、激光系统等。高压放大器的原理涉及到放大器的工作原理、电路结构、工作特性等多个方面。下面将从这些方面对高压放…

.net core接入nacos注册服务并使用配置中心

1、安装依赖 Nuget包&#xff1a;nacos-sdk-csharp.Extensions.Configuration和nacos-sdk-csharp.AspNetCore 2、在appsettings.json中配置 "nacos": {"ServerAddresses": ["http://localhost:8848/"],"DefaultTimeOut": 15000,"…

各省药品集中采购平台-地方药品集采分析数据库

国家第十批药品集中采购的启动时间暂未明确&#xff0c;但即将到来&#xff0c;在5月&#xff0c;国家医保局发布了《关于加强区域协同做好2024年医药集中采购提质扩面的通知》&#xff0c;其中明确指出将“开展新批次国家组织药品和医用耗材集中带量采购&#xff0c;对协议期满…

android dialog 显示时 activity 是否会执行 onPause onStop

当一个 Android Dialog 显示时&#xff0c;当前 Activity 通常不会执行 onPause 或 onStop 方法。Dialog 是附加到 Activity 上的一个窗口&#xff0c;它不会中断或替换当前的 Activity&#xff0c;因此 Activity 的生命周期方法 onPause 和 onStop 不会被调用。 然而&#xf…

Vue2 - 项目上线后生产环境中去除console.log的输出以及断点的解决方案

前言 当你准备将Vue.js应用程序部署到生产环境时,一个关键的优化步骤是移除代码中的所有 console.log 语句以及断点。在开发阶段,console.log 是一个非常有用的调试工具,但在生产环境中保留它们可能会影响性能和安全性。在本文中,我将向你展示如何通过使用Vue CLI 2来自动…

大语言模型在医疗领域的进展、应用和挑战_医疗大语言模型算法csdn

### 概述 本文综述了医学领域大型语言模型&#xff08;LLM&#xff09;的进展、应用和面临的挑战。大型语言模型如ChatGPT在理解和生成人类语言方面显示出了显著的能力&#xff0c;引起了广泛关注。在医学领域&#xff0c;研究人员正致力于利用LLM支持各种医疗任务&#xff0c…

【SpringBoot登录】设置图片验证及2FA双重身份验证两种方式

1. 登录接口 用户登录模块的思路&#xff0c;先校验验证码是否匹配&#xff0c;然后校验用户名&#xff0c;密码是否匹配&#xff0c;匹配则用StpUtil生成token并返回。 import cn.dev33.satoken.stp.SaTokenInfo; import cn.dev33.satoken.stp.StpUtil; import cn.hutool.co…

13 Redis-- MySQL 和 Redis 的数据一致性

Redis-- MySQL 和 Redis 的数据一致性 先抛一下结论&#xff1a;在满足实时性的条件下&#xff0c;不存在两者完全保存一致的方案&#xff0c;只有最终一致性方案。

Go语言时间包time中的可用函数和方法 定义 总结和使用示例

Go语言时间包time中的可用函数和方法 Constants 时间常量 这个就是常用的时间格式布局的常量定义 这个在我们对时间进行解析或者转换为字符串是非常重要&#xff0c; 如果是下面的这些类型之一的可用直接 time.XXX 就可使用&#xff0c; 如常见的标准时间格式 年月日时分秒(2…

FlinkX学习

FlinkX学习 FlinkX安装 由于flinkx已经改名chunjun 官网已不存在 (https://gitee.com/lugela/flinkx#flinkx)这里可以看到flinkx的操作文档 1、上传并解压 unzip flinkx-1.10.zip -d /usr/local/soft/2、配置环境变量 FLINKX_HOME/usr/local/soft/flinkx-1.10 export PATH$F…

APP提交到AppStore时报错Asset validation failed (90161)

使用XCode打包并上传到App Store Connect时&#xff0c;收到 “Asset validation failed (90161): Invalid Provisioning Profile” 错误&#xff0c;表明你在上传应用程序到 App Store Connect 时使用了错误的配置文件。以下是解决这个问题的详细步骤&#xff1a; 步骤1&…

STL-迭代器

1.迭代器 1.1正向迭代器 正向迭代器是用一个类封装的&#xff0c;迭代器类。例如&#xff1a;在vector&#xff0c;string中的迭代器就相当于一个指针&#xff0c;在list类中用一个类来封装一个节点&#xff0c;实质上也还是一个指针&#xff0c;迭代器就相当于指向一个节点的…

AUTOSAR的基础软件和功能

AUTOSAR的基础软件和功能 AUTOSAR&#xff08;Automotive Open System Architecture&#xff09;是一个开放且标准化的软件架构&#xff0c;旨在为汽车电子控制单元&#xff08;ECU&#xff09;创建一个可复用和模块化的软件基础。AUTOSAR的基础软件&#xff08;Basic Softwar…

网络构建和设计方法_3. 网络设计

1.层次化网络模型设计 层次化网络设计模型&#xff0c;可帮助设计者按照层次设计网络架构&#xff0c;并对不同层次赋予特定网络功能&#xff0c;选择适合的设备/系统。在典型层次化网络结构中&#xff0c;核心层通常选用具备高可用性和性能优化的高端路由器/交换机&#xff1b…

背靠广汽、小马智行,如祺出行打得过滴滴和百度吗?

©自象限原创 作者丨艾AA 编辑丨薛黎 北京时间6月14日凌晨&#xff0c;在特斯拉股东大会上&#xff0c;马斯克阐述了对Robotaxi&#xff08;自动驾驶出租车&#xff09;商业模式的构想——特斯拉不仅会运营自己的无人驾驶出租车车队&#xff0c;还可以让特斯拉车主们的爱…

微服务开发 —— 项目环境搭建篇

环境搭建 Linux 环境搭建 Linux 环境搭建大家可以使用虚拟机 VMware、VirtualBox 等应用创建虚拟机&#xff0c;使用Vagrant也可以快捷搭建虚拟环境&#xff1b;Windows 中有 WSL2&#xff0c;Windows 中的 Docker 也对 WSL 进行了支持&#xff0c;也是一个不错的选择。或者可…

Windows - 像Linux一样使用alias

前言 阅读本文约2分钟 说明 使用doskey命令 设置别名 查看当前目录 doskey lldir 激活conda的spider环境 doskey spiderconda activate spider 退出conda环境 doskey condaqconda deactivate 查看所有别名 doskey /macros

实现设计开挂|如何设计出坚不可摧的网球拍?

数字揭秘 我们发现自己可能偶尔会以过激的方式表达沮丧或愤怒&#xff0c;哪怕是在公共场合。就算是世界级的网球运动员也无法避免偶尔的情绪爆发&#xff0c;他们有时会砸球拍来释放被压抑的情绪或应对来自竞赛的压力。 网球运动员的情绪爆发已被证明是不可避免的。哪怕是包括…

Linux系统相关函数总结

在应用程序当中&#xff0c;有时往往需要去获取到一些系统相关的信息&#xff0c;譬如时间、日期、以及其它一些系统相关信息&#xff0c;本章将向大家介绍如何通过 Linux 系统调用或 C 库函数获取这些系统信息。除此之外&#xff0c;还会向大家介绍 Linux 系统下的/proc 虚拟文…

浏览器插件利器-allWebPluginV2.0.0.14-beta版发布

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品&#xff0c;致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX插件直接嵌入浏览器&#xff0c;实现插件加载、界面显示、接口调用、事件回调等。支持谷歌、火狐等浏…