LeetCode热题100刷题10:46. 全排列、78. 子集、17. 电话号码的字母组合、39. 组合总和、138. 随机链表的复制

回溯问题

46. 全排列

全排列问题:
path
递归终止条件:path中是否已存储所有元素;
for循环处理节点集合:used=0未被使用的元素

class Solution {
public:vector<int> path;vector<vector<int>> res;void backtracking(vector<int>& nums,vector<bool>& used) {if(path.size() == nums.size()){res.push_back(path);return;}for(int i=0;i<nums.size();i++) {if(used[i]==true)continue;path.push_back(nums[i]);used[i]=true;backtracking(nums,used);used[i]=false;path.pop_back();}}vector<vector<int>> permute(vector<int>& nums) {vector<bool> used(nums.size(),false);backtracking(nums,used);return res;}
};

78. 子集

子集问题:
每个集合都需要存储到res中,
递归终止条件:可以省略,startIndex下标到达数组末尾 与for循环的条件判断一致
for循环处理的元素集合,startIndex-数组最后一个元素

class Solution {
public:vector<vector<int>> res;vector<int> path;void backtracking(vector<int>& nums,int startIndex) {res.push_back(path);for(int i=startIndex;i<nums.size();i++) {path.push_back(nums[i]);backtracking(nums,i+1);path.pop_back();}}vector<vector<int>> subsets(vector<int>& nums) {backtracking(nums,0);return res;}
};

17. 电话号码的字母组合

这个题根据digits中给出的数字字符,从而锁定对应的字符串,对字符串中的字母进行组合,前面复习过两遍,对这个题的印象还不是很清晰,故再写一次题解:
在这里插入图片描述

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

39. 组合总和

元素可以多次使用,下一次元素集合的开始位置可以还是startIndex

class Solution {
public:vector<vector<int>> res;vector<int> path;void backtracking(vector<int>& candidates,int target,int sum,int startIndex) {if(sum > target)return;if(sum == target) {res.push_back(path);return;}for(int i=startIndex;i<candidates.size();i++) {path.push_back(candidates[i]);sum+=candidates[i];backtracking(candidates,target,sum,i);sum-=candidates[i];path.pop_back();}}vector<vector<int>> combinationSum(vector<int>& candidates, int target) {int sum=0;backtracking(candidates,target,sum,0);return res;}
};

138. 随机链表的复制

/*
// Definition for a Node.
class Node {
public:int val;Node* next;Node* random;Node(int _val) {val = _val;next = NULL;random = NULL;}
};
*/class Solution {
public:unordered_map<Node*,Node*> cachedNode;Node* copyRandomList(Node* head) {if(head == nullptr)return nullptr;//如果当前节点没有被拷贝if(!cachedNode.count(head)) {//新定义节点headNew保存val,Node* headNew = new Node(head->val);cachedNode[head] = headNew;//head->next 和head->random要先存在了才能指过去//利用递归完成headNew的后继节点next和随机指向节点random的拷贝headNew->next = copyRandomList(head->next);headNew->random = copyRandomList(head->random);}return cachedNode[head];}
};

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

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

相关文章

【MPPT太阳能升压控制器方案】远翔升压恒流驱动芯片FP7209单节电池升压24V,30V,36V,42V,48V全系列方案,高转换效率,输出带短路保护功能

高转换效率&#xff0c;太阳能控制器方案——详解太阳能控制器PWM / MPPT极简方案其设计要点&#xff0c;升压30V&#xff0c;36V&#xff0c;42V&#xff0c;48V 使用单颗芯片FP7209即实现两级升压到30V&#xff0c;36V&#xff0c;42V&#xff0c;48V&#xff0c;相对于单极升…

【Python】已解决:ModuleNotFoundError: No module named ‘nltk’

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;ModuleNotFoundError: No module named ‘nltk’ 一、分析问题背景 在使用Python进行自然语言处理或文本分析时&#xff0c;我们经常会用到各种库来辅助我们的工…

【转】-java多线程读写锁ReadWriteLock

Java多线程中读写锁ReadWriteLock的使用 该博客转载自​**lavimer​的​Java多线程中读写锁ReadWriteLock的使用** 1. 概念 读写锁分为读锁和写锁&#xff0c;多个读锁之间是不需要互斥的(读操作不会改变数据&#xff0c;如果上了锁&#xff0c;反而会影响效率)&#xff0c;…

【OpenCV】BGR三色通道的提取与合并--超详细解读

在OpenCV中&#xff0c;处理图像时经常需要提取或合并图像的RGB&#xff08;红、绿、蓝&#xff09;三色通道。OpenCV默认使用BGR&#xff08;蓝、绿、红&#xff09;顺序来存储图像的颜色通道&#xff0c;这一点与很多图像处理库&#xff08;如PIL/Pillow&#xff09;不同&…

Android Constant expression required (case R.id.xxx)

gradle更新到8.0后&#xff0c;遇到了这个报错 有两种解决方式&#xff1a; 1、在gradle.properties中添加下面代码 android.nonFinalResIdsfalse 2、使用if-else来判断 int id view.getId(); if (id R.id.setting_iv_back) {} else if (id R.id.setting_tv_clear) {}

Web知识库应用程序LibreKB

什么是 LibreKB &#xff1f; LibreKB 是一款知识库 Web 应用程序。免费、开源、自托管&#xff0c;基于 PHP/MySQL。 官方并没有 Docker 镜像&#xff0c;老苏这次图省事&#xff0c;并没有像往常一样构建一个镜像&#xff0c;而是基于 Docker 搭建了一个 LAMP 环境&#xff0…

蹭一个围棋亚军!不要和低维的人说话——早读(逆天打工人爬取热门微信文章解读)

熬夜后需要补什么呢&#xff1f; 引言Python 代码第一篇 洞见 不要和低维的人说话&#xff08;深度好文&#xff09;第二篇 冲冲冲结尾 引言 昨晚真的是熬夜又想不出东西 真的头大 最近下围棋 这个棋感很好呀 我是K级选手 目前是8级 套几个buff 纯自学 为什么决定学围棋呢? 是…

谷粒商城配置中心错误记录

文章目录 一&#xff0c;com.alibaba.nacos.api.exception.NacosException: endpoint is blank1&#xff0c;分析定位2&#xff0c;关于配置文件application和bootstrap的区别与练习加载顺序使用说明 参考文献 一&#xff0c;com.alibaba.nacos.api.exception.NacosException: …

Navicat Premium 15 for Mac/Win 中文安装包下载

Navicat Premium 15 是一款数据库管理工具&#xff0c;它支持多种类型的数据库&#xff0c;包括 MySQL、MariaDB、MongoDB、SQL Server、Oracle、PostgreSQL 和 SQLite。该软件提供了一个用户友好的图形界面&#xff0c;使得数据库的管理变得更加简单和高效。Navicat Premium 1…

网页视频提取在线工具

在互联网的海洋中&#xff0c;我们时常会遇到一些令人心动的视频&#xff0c;想要将其下载到本地&#xff0c;以便随时观看。然而&#xff0c;网页视频下载对于很多人来说&#xff0c;似乎是个复杂的过程。别担心&#xff0c;今天我就为大家带来一份详尽的网页视频下载教程&…

24小时悬停系留照明无人机技术详解

24小时悬停系留照明无人机是一款专门设计用于提供长时间、高效能照明服务的无人机系统。该系统结合了无人机技术与先进的照明设备&#xff0c;通过系留技术实现无人机的稳定悬停&#xff0c;从而提供连续不断的照明服务。该无人机能够在各种环境条件下进行24小时不间断工作&…

Zkeys三方登录模块支持QQ、支付宝登录

1&#xff0c;覆盖到根目录&#xff0c;并导入update.sql数据库文件到Zkeys数据库里 2. 后台系统权限管理&#xff0c;配置管理员权限-系统类别-找到云外科技&#xff0c;全部打勾 3&#xff0c;后台系统设置找到云外快捷登录模块填写相应的插件授权配置和登录权限配置&#x…

docker 安装教程

机缘 最近在开发用用到了docker,主要是将开发的项目发版到平台上&#xff0c;运用到docker发版&#xff0c;所以才会写这篇文章。 教程 1、安装Hype-v。 在安装之前&#xff0c;首先要检查下电脑系统是否安装Hyper-v功能。 注意&#xff1a;一定要检查电脑系统&#xff0c;…

多会话 Telnet 日志记录器

创建一个多会话 Telnet 日志记录器可以实现对多个 Telnet 会话进行连接、监控和记录日志。以下是一个基本的 Python 示例&#xff0c;使用 telnetlib 库来实现多会话 Telnet 日志记录器&#xff0c;并使用 threading 模块来处理多个会话。 1、问题背景 我们需要编写一个脚本&a…

Сетунь的24条单播指令

1、Setun模拟器概述 真的&#xff0c;想搞懂一台电脑是怎么运行的&#xff0c;那就搞懂它的指今集是怎么跑的&#xff0c;感觉很离了个大谱的&#xff0c;先看由铁氧体磁芯上的器件组成的RAM&#xff0c;容量为162个9-trit单元&#xff0c;即每个单元为9-trit&#xff0c;每页有…

【uni-app+Vue3】 API请求封装:让接口调用更便捷

前言&#xff1a;uni-app是一款基于Vue.js框架的跨平台开发工具&#xff0c;可以将代码编译成H5、小程序、App等不同平台的应用。在进行uni-app开发时&#xff0c;网络请求是必不可少的环节。为了方便开发&#xff0c;我们可以封装一些网络请求方法&#xff0c;以便在多个页面中…

About CAT7验证——CLASS F或者Fa测试FLUKE解决方案

七类CLASS F线缆认证测试标准在TIA的标准数据库中是直接跳过&#xff0c;取而代之的是八类的通道测试标准&#xff0c;真正认证七类测试的是在ISO标准数据库中&#xff0c;找到ISO11801 CHANNEL CLASS F或者FA&#xff0c;这就是标准的七类测试标准&#xff0c;测试频率需要达到…

一些学习网站分享

一些学习网站分享&#xff1a; ✅力扣(LeetCode) 力扣 (LeetCode) 官网 - 全球极客挚爱的技术成长平台 力扣是一个刷题站&#xff0c;支持C&#xff0c;Java&#xff0c;Python等多种编程语言&#xff0c;并按难度分为简单、中等、困难三个等级。是真的能刷到大厂真题 ✅Gith…

文本引导I2I迈向统一!北大王选所提出FCDiffusion:端到端适用于各种图像转换任务

文章链接&#xff1a;https://arxiv.org/pdf/2407.03006 github地址&#xff1a;https://github.com/XiangGao1102/FCDiffusion 最近&#xff0c;大规模的文本到图像(T2I)扩散模型在图像到图像(I2I)转换中展现出强大的能力&#xff0c;允许通过用户提供的文本提示进行开放域的图…

智能汽车网络安全笔记

汽车五大域 动力底盘、车身控制、智能座舱、智能网联和高级辅助驾驶五大域 国外汽车安全法规标准 汽车网络安全管理体系&#xff08;CSMS&#xff09; CSMS指的是管理汽车的网络威胁和风险&#xff0c;并保护车辆免受网络攻击的组织过程和管理系统 安全验证和安全测试 8…