代码随想录算法【Day5】
DAY5
1.熟悉哈希表的数据结构:数组、map和set,使用方法、使用场景
2.哈希表应用场景:解决给你一个元素,判断它在集合里是否出现过。
242.有效的字母异位词
本题用数组解决的。
class Solution { public:bool isAnagram(string s, string t) {//通过ascii码表将26个字母映射到数组recordint record[26] = {0};for(int i = 0; i < s.size(); i++){record[s[i] - 'a'] ++;}for(int i = 0; i < t.size(); i++){record[t[i] - 'a'] --;}for(int i = 0; i < 26; i++){if(record[i] != 0) return false;}return true;} };
有关类型转换,当char类型进行算术运算时,会发生如下转换:
-
在算术运算之前,char类型会被自动提升(promoted)为int类型
-
这种转换叫做"整型提升"(integral promotion)
-
所以两个char相减的结果直接就是int类型,不需要再进行类型转换了
349. 两个数组的交集
什么时候用set?1.数值很大;2.数值分布很散
若数值的大小上亿,数组无法解决且浪费空间,这种情况适合用set。
本题数组最大为1000,但是我们按照数值上亿的情况,也就是用set来做。
class Solution { public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {unordered_set<int> result_set;unordered_set<int> nums_set(nums1.begin(), nums1.end());// for(int num : nums2)for(int i = 0; i < nums2.size(); i++){ int num = nums2[i];if(nums_set.find(num) != nums_set.end()){result_set.insert(num);}}return vector<int>(result_set.begin(), result_set.end());} };
1.for(int num : nums2)的含义
遍历nums2中的数,并赋值给num
2.if(nums_set.find(num) != nums_set.end())的含义。
nums_set.end()是最后一个元素后面的位置,如果nums_set.find()没有找到num,就会返回nums_set.end()。
所以这个判断语句的意思是:if(nums_set中存在num)
3.return vector<int>(result_set.begin(), result_set.end()); 这里是一个强制类型转换吗
不是,是在调用 vector 的一个构造函数。这是 vector 类的一个特殊构造函数,它可以接收两个迭代器作为参数,然后创建一个新的 vector,包含这两个迭代器之间的所有元素。
这行代码做了以下事情:
-
创建一个新的 vector<int> 对象
-
使用 result_set 的开始迭代器(begin())和结束迭代器(end())
-
将 result_set 中的所有元素复制到这个新的 vector 中
202.快乐数
直接法:报错超时
class Solution { public:bool isHappy(int n) {int res; //记录平方和int tmp;while(n > 3){res = 0;while(n){tmp = n%10;n /= 10;res = res + tmp * tmp;}if(res == 1) return true;n = res;}if(n == 1) return true;return false;} };
题目描述:“也可能是 无限循环 但始终变不到 1”,直接法没有解决这个情况,所以发生了超时
那么如何判断发生了无限循环?
无限循环,那么也就是说求和的过程中,sum会重复出现。使用哈希法,来判断这个sum是否重复出现,如果重复了就是return false, 否则一直找到sum为1为止。
更正后的代码:
class Solution { public:bool isHappy(int n) {int res; //记录平方和int tmp;unordered_set<int> set;while(n > 3){res = 0;while(n){tmp = n%10;n /= 10;res = res + tmp * tmp;}if(res == 1) return true;if(set.find(res) != set.end()) return false;else set.insert(res);n = res;}if(n == 1) return true;return false;} };
1. 两数之和
O(n^2)做法:
class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {int n = nums.size();for (int i = 0; i < n; ++i){for (int j = i + 1; j < n; ++j){if (nums[i] + nums[j] == target) {return {i, j};}}}return {};} };
用map解决:
思路:以target = 9为例,遍历到数组中的3的时候,去找哈希表里是否存在6,如果存在6,就返回它的下标。
所以,我们要知道是否存在这个元素的同时,还想知道这个元素的下标,只能用map(key - value)来做哈希映射
class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map <int, int> map;for(int i = 0; i < nums.size(); i++){auto iter = map.find(target - nums[i]);if(iter != map.end()){return {iter->second, i};}map.insert(pair<int, int>(nums[i], i));}return {};} };
1.“auto iter = map.find(target - nums[i]);”中,auto关键字的作用?
auto用于自动推导变量的类型,map.find(target - nums[i])返回的是一个迭代器类型unordered_map<int,int>::iterator
具体来说:
1.如果找到了目标值:
-
返回指向找到的键值对的迭代器
-
通过这个迭代器,可以使用:
-
iter->first 访问键(key)
-
iter->second 访问值(value)
-
-
如果没找到目标值:
-
返回 map.end(),这是一个特殊的迭代器,表示到达容器的末尾
-
这就是为什么代码中要判断
if(iter != map.end())
2.“map.insert(pair<int, int>(nums[i], i));”中,pair是什么?
pair用于将两个字合成一个单元,pair<int, int>(nums[i], i)创造了一个键值对,然后插入到unordered_map中,作为映射关系。
相关文章:
代码随想录算法【Day5】
DAY5 1.熟悉哈希表的数据结构:数组、map和set,使用方法、使用场景 2.哈希表应用场景:解决给你一个元素,判断它在集合里是否出现过。 242.有效的字母异位词 本题用数组解决的。 class Solution { public:bool isAnagram(strin…...
工程师如何平衡工作和生活?
在快节奏的社会环境中,工程师面临着高强度的工作压力和长时间的工作需求,要做到工作和生活的平衡,确实不容易。然而,通过一些策略和改变工作方式,可以有效缓解压力,找到平衡点。以下是一些建议:…...
若依数据权限控制
效果 新建用户 表结构 sys_role_dept 这张表的存在。是为了实现数据权限自定义的功能 service层 mapper层 流程...
C++ 设计模式:抽象工厂(Abstract Factory)
链接:C 设计模式 链接:C 设计模式 - 工厂方法 链接:C 设计模式 - 原型模式 链接:C 设计模式 - 建造者模式 抽象工厂(Abstract Factory)是一种创建型设计模式,它提供一个接口,用于创…...
嵌入式系统 第十讲 字符设备和驱动程序设计
• 字符设备是Linux三大设备之一(另外两种是块设备,网 络设备)。 • 字符设备就是采用字节流形式通讯的I/O设备,绝大部分 设备都是字符设备。 • 常见的字符设备包括鼠标、键盘、显示器、串口等等。 • 10.1 字符设备驱动框架 …...
Cod---Class of Device for Bluetooth device
0 Preface/Foreword 蓝牙sink在广播时候,需要告知自己的设备类型,这样蓝牙source可以方便准备相应协议。 从可视化来看,cod(设备类型),比如Android手机,在蓝牙可配对列表中,左边那…...
踏踏实实练SQLday2-3连续12345
3连续12345 连续12345 -- hive的连续开窗函数知识点:排序开窗函数--4种 (如果第2 和 3 名一样大)3种 序号排序 - rank() 12245 - 紧缩dense_rank() 12234 - row_number() 123451种百分比排序 - percent_rank() - 算百分比,超过了多少人top20排行榜 连续1…...
脱离电路图编程
SM0.0常开始终吸合 SM0.1(特殊中继) 常开:闭合一次再断开 常闭:断开一次再闭合 上述是依据电路图编程...
spring的@Transactional事务原理理解
目录 Transactional 普通例子代码和测试输出编程式事务事务代理实现和TransactionAspectSupport重要类复习Spring的事务传播机制有哪些实际工作中用到的事务处理 Transactional事务原理理解 Transactional 普通例子代码和测试输出 Transactional(rollbackFor Exception.class…...
机器学习之线性回归算法预测数据
机器学习之线性回归算法预测数据 目录 机器学习之线性回归算法预测数据线性回归算法概念理解算法导入线性回归模型参数理解误差项分析 LinearRegression理解参数理解返回值方法基本格式 预测一元线性回归数据问题及理解可视化数据理解数据预测 预测二元线性回归数据问题及理解数…...
Markdown如何填充前景色、背景色
Markdown如何填充前景色、背景色 前言语法详解前景色背景色 > 快来试试吧😊 Markdown填充前景色、背景色讲解👈点击这里也可查看 前言 颜色可以使普通文字表达出更深刻的含义,比如红色用于醒目与警示,绿色用于表达良好与正常等…...
SpringCloudAlibaba实战入门之路由网关Gateway断言(十二)
上一节课中我们初步讲解了网关的基本概念、基本功能,并且带大家实战体验了一下网关的初步效果,这节课我们继续学习关于网关的一些更高级有用功能,比如本篇文章的断言。 一、网关主要组成部分 上图中是核心的流程图,最主要的就是Route、Predicates 和 Filters 作用于特定路…...
Spring Boot Actuator、Spring Boot Actuator使用、Spring Boot Actuator 监控、Spring程序监控
SpringBoot四大核心之actuator——程序监控器 1. 添加 Spring Boot Actuator 依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> 2. 配置 …...
【机器学习】机器学习的基本分类-半监督学习(Semi-supervised Learning)
半监督学习是一种介于监督学习和无监督学习之间的机器学习方法。它利用少量的标注数据(有监督数据)和大量的未标注数据(无监督数据)来进行模型训练,从而在标注数据不足的情况下,提升模型的性能。 半监督学习…...
RAG挑战及其解决方案:实践中的应对策略
RAG挑战及其解决方案:实践中的应对策略 在将检索增强生成(RAG)技术应用于生产环境的过程中,我发现了许多在原型设计阶段不易察觉的挑战。RAG结合了生成模型和检索机制,以调用外部知识,从而提高语言模型的质…...
机器学习DAY7: 特征工程和特征选择(数据预处理)(完)
本文通过特征提取、特征转换、特征选择三个过程介绍数据预处理方法,特征提取将原始数据转换为适合建模的特征,特征转换将数据进行变换以提高算法的准确性,特征选择用来删除无用的特征。 知识点 特征提取特征转换特征选择 本次实验的一些示…...
uniapp使用ucharts组件
1.ucharts准备 有两种使用方式:一种是在uni的插件市场下载(组件化开发)。一种是手动引入ucharts包。官方都封装好组件了,我们不用岂不是浪费。 直接去dcloud插件市场(DCloud 插件市场)找,第一…...
【RabbitMQ高级篇】消息可靠性问题(1)
目录 1.消息可靠性 1.1.生产者消息确认 1.1.1.修改配置 1.1.2.定义Return回调 1.1.3.定义ConfirmCallback 1.2.消息持久化 1.2.1.交换机持久化 1.2.2.队列持久化 1.2.3.消息持久化 1.3.消费者消息确认 1.3.1.演示none模式 1.3.2.演示auto模式 1.4.消费失败重试机制…...
PR视频剪辑的属性
调整运动效果 选中视频或图品素材在效果控件面板可以看到运动效果的各个参数。 在运动效果中可以调整视频素材的位置、缩放、旋转等属性。 位置属性 PR中素材的位置根据图像锚点的位置决定,由x、y轴的参数控制图像位置。一个1920px1080px的视频素材默认位置是960…...
[数据集][图像分类]常见鱼类分类数据集2w张8类别
数据集类型:图像分类用,不可用于目标检测无标注文件 数据集格式:仅仅包含jpg图片,每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数):7554(剩余1w多为测试集) 分类类别数:…...
Boost之log日志使用
不讲理论,直接上在程序中可用代码: 一、引入Boost模块 开发环境:Visual Studio 2017 Boost库版本:1.68.0 安装方式:Nuget 安装命令: #只安装下面几个即可 Install-package boost -version 1.68.0 Install…...
Spring Cloud LoadBalancer (负载均衡)
目录 什么是负载均衡 服务端负载均衡 客户端负载均衡 Spring Cloud LoadBalancer快速上手 启动多个product-service实例 测试负载均衡 负载均衡策略 自定义负载均衡策略 什么是负载均衡 负载均衡(Load Balance,简称 LB) , 是高并发, 高可用系统必不可少的关…...
ASP.NET Web应用程序出现Maximum request length exceeded报错
一、问题描述 在ASP.NET的web应用中,导出数据时出现500 - Internal server error.Maximum request length exceeded。 二、原因分析 这个错误通常出现在Web应用程序中,表示客户端发送的HTTP请求的长度超过了服务器配置的最大请求长度限制。这可能是因为…...
Modbus
【欢迎关注编码小哥,学习更多实用的编程方法和技巧】 Modbus 是一种广泛使用的通信协议,主要用于工业自动化和控制系统中。它最初由 Modicon(现为施耐德电气的一部分)在1979年开发,旨在实现不同设备之间的通信。Modbu…...
【AI资讯汇总】2024年12月第四周
目录 OpenAI发布o3:AI 推理能力的重大突破,得分高达 87.5% 阿里通义千问Qwen开源视觉推理模型QVQ-72B-Preview OpenAI推出ChatGPT新记忆功能:能跨对话回忆用户交流 OpenAI发布ChatGPT宕机故障详细报告:只因一个小更改导致 OpenAI发布o3&a…...
Pytorch使用手册-DCGAN 指南(专题十四)
1. Introduction 本教程将通过一个示例介绍 DCGANs(深度卷积生成对抗网络)。我们将训练一个生成对抗网络(GAN),在给它展示大量真实名人照片后,它能够生成新的“名人”图片。这里的大部分代码来源于 PyTorch 官方示例中的 DCGAN 实现,而本文档将对该实现进行详细解释,并…...
c++---------------------------string
从今天开始我们就开始学c的容器了就不需要我们造轮子了 1.为什么学习string类 1.1c语言中的字符串 C 语言中,字符串是以 \0 结尾的一些字符的集合,为了操作方便, C 标准库中提供了一些 str 系列 的库函数,但是这些库函数与字符…...
PTPVT 插值说明
文章目录 PTPVT 插值说明 PTPVT 插值说明PVT Hermite插值PVT 三次多项式插值PT 插值Sin轨迹测试结果PVT Hermite插值结果PVT 三次多项式插值结果PT 插值结果 用户轨迹测试结果PVT Hermite插值结果PT 插值结果 PTPVT 插值说明 PT模式: 位置-时间路径插值算法。 PVT模…...
Java - 日志体系_Simple Logging Facade for Java (SLF4J)日志门面_SLF4J集成Log4j1.x 及 原理分析
文章目录 Pre官网集成Log4j1.x步骤POM依赖使用第一步:编写 Log4j 配置文件第二步:代码 原理分析1. 获取对应的 ILoggerFactory2. 根据 ILoggerFactory 获取 Logger 实例3. 日志记录过程 小结 Pre Java - 日志体系_Apache Commons Logging(JC…...
集成RabbitMQ+MQ常用操作
文章目录 1.环境搭建1.Docker安装RabbitMQ1.拉取镜像2.安装命令3.开启5672和15672端口4.登录控制台 2.整合Spring AMQP1.sun-common模块下创建新模块2.引入amqp依赖和fastjson 3.新建一个mq-demo的模块1.在sun-frame下创建mq-demo2.然后在mq-demo下创建生产者和消费者子模块3.查…...
Gitlab17.7+Jenkins2.4.91实现Fastapi/Django项目持续发布版本详细操作(亲测可用)
一、gitlab设置: 1、进入gitlab选择主页在左侧菜单的下面点击管理员按钮。 2、选择左侧菜单的设置,选择网络,在右侧选择出站请求后选择允许来自webhooks和集成对本地网络的请求 3、webhook设置 进入你自己的项目选择左侧菜单的设置ÿ…...
Kubernetes 的资源管理方式(二)
Kubernetes 的资源管理方式 命令式对象配置 命令式对象配置就是通过命令配置和配置文件去操作 Kubernetes 的资源。 命令式对象配置的方式操作资源,可以简单的认为:命令 yaml 配置文件(里面是命令需要的各种参数)。 ① 创建一…...
一种基于动态部分重构的FPGA自修复控制器
1.FPGA动态部分重构技术 动态部分重构技术指在FPGA运行时,通过加载部分位流文件来修改FPGA可重构区域中的逻辑设计,修改过程中其余逻辑功能不受影响整个系统也能够持续运行。 下图为FPGA动态部分重构的基本原理图。通过下载A1.bit、A2.bit、A3.bit 或A4.…...
MarkItDown的使用(将Word、Excel、PDF等转换为Markdown格式)
MarkItDown的使用(将Word、Excel、PDF等转换为Markdown格式) 本文目录: 零、时光宝盒🌻 一、简介 二、安装 三、使用方法 3.1、使用命令行形式 3.2、用 Python 调用 四、总结 五、参考资料 零、时光宝盒🌻 &a…...
【Vim Masterclass 笔记01】Section 1:Course Overview + Section 2:Vim Quickstart
文章目录 Section 1:Course Introduction 课程概述S01L01 Course Overview 课程简介课程概要 S01L02 Course Download 课程资源下载S01L03 What Vim Is and Why You Should Learn It 何为 Vim?学来干啥?1 何为 Vim2 为何学 Vim Section 2&…...
BLE core 内容整理解释
本文内容比较杂散,只是做记录使用,后续会整理的有条理些 link layer 基本介绍 **Link Layer Control(链路层控制)**是蓝牙低功耗(BLE)协议栈的核心部分,负责实现设备间可靠、安全、低功耗的数…...
import org.springframework.data.jpa.repository.JpaRepository<T, ID>;
org.springframework.data.jpa.repository.JpaRepository<T, ID> 接口中的 ID 类型参数。 理解 JpaRepository<T, ID> 中的 T 和 ID: T (Type): T 代表的是你想要操作的 实体类 的类型。例如,如果你有一个名为 User 的实体类,那…...
抽象工厂设计模式的理解和实践
在软件开发中,设计模式是前人通过大量实践总结出的、可复用的、解决特定问题的设计方案。它们为我们提供了一种标准化的解决方案,使得代码更加简洁、灵活和易于维护。在众多设计模式中,抽象工厂模式(Abstract Factory Pattern&…...
RuntimeError: CUDA error: initialization
RuntimeError: CUDA error: initialization cuda初始化出问题了,这是因为在python多线程跑gpu代码程序时先对cuda进行操作,然后在跑gpu代码时就没有cuda可用了。 在main的主程序代码加一行代码就可以了,用来获取cuda,在代码中只能…...
可信数据空间建设及应用参考指南(V1.0)
为贯彻国家数据局《可信数据空间发展行动计划(2024-2028 年)》,促进可信数据空间持续、快速和健康发展,相关行业专家组织编写《可信数据空间建设及应用参考指南(V1.0)》(以下简称《参考指南》&a…...
目标检测文献阅读-YOLO:统一的实时目标检测(12.23-12.29)
目录 摘要 Abstract 1 引言 2 统一的检测 3 网络设计 4 训练 5 YOLOv5训练猫狗识别模型 5.1 项目代码整体结构介绍 5.2 数据集和预训练权重的准备 5.3 训练猫狗识别模型 5.3.1 修改数据配置文件 5.3.2 修改模型配置文件 5.3.3 训练模型 5.3.4 启用tensorbord查看…...
埃斯顿机器人程序案例多个点位使用变量
多个点位使用变量取放...
JVM实战—4.JVM垃圾回收器的原理和调优
大纲 1.JVM的新生代垃圾回收器ParNew如何工作 2.JVM老年代垃圾回收器CMS是如何工作的 3.线上部署系统时如何设置垃圾回收相关参数 4.新生代垃圾回收参数如何优化 5.老年代的垃圾回收参数如何优化 6.问题汇总 1.JVM的新生代垃圾回收器ParNew如何工作 (1)JVM的核心运行原理…...
【项目日记(8)】第三层:页缓存的具体实现(下)
目录 前言1. 地址空间上的内存使用情况2. 页缓存合并内存的代码实现3. 总结以及对代码的拓展 前言 请先看完上一篇文章页缓存的具体实现(上) 1. 地址空间上的内存使用情况 在地址空间中,一共是4GB大小的空间,地址从0000 0000到FFFF FFFF。 第0页的起始地址是0 第…...
算法题(19):多数元素
审题: 数组不为空且一定存在众数。需要返回众数的数值 思路: 方法一:哈希映射 先用哈希映射去存储对应数据出现的次数,然后遍历找到众数并输出 当然也可以在第一次映射的过程中就维护一个出现次数最多的数据,这样子就可…...
==、equals、hashcode
和equals区别 用于基本数据类型,比较的是值,用于引用类型,比较的是对象的内存地址。java中只有值传递,因此对于引用类型,实际比较的引用的内存地址的值。equals不能用来判断基本数据类型,只能判断引用数据…...
《优势谈判》——阅读笔记
投入 思想准备:一个谈判是要双赢的,至少需要让对手这么认为;进行一场谈判,需要看到对面是否真的愿意和你谈判 谈判技巧 永远不要接受首次报份;如果对方临时变更了要求,则可以通过立刻要求对方做补偿等方…...
mybatis-plus 用法总结
MyBatis-Plus(简称 MP)是 MyBatis 的增强工具,旨在简化开发者的 CRUD 操作。它在 MyBatis 的基础上提供了更多的功能和便利性,如代码生成器、分页插件、性能分析插件等,使开发者能够更高效地进行数据库操作。MyBatis-P…...
华为开源自研AI框架昇思MindSpore应用案例:ICNet用于实时的语义分割
ICNet用于实时的语义分割 ICNet 被广泛应用于实时的语义分割领域。它在处理图像数据时,能够以较高的效率进行语义分割操作,为相关领域的研究和实际应用提供了有力的支持。ICNet 的实时性使其在众多场景中都具有很大的优势,例如在视频处理、自…...
CAN201 Introduction to Networking(计算机网络)Pt.2 传输层
文章目录 3. Transport Layer(传输层)3.1 Multiplexing and demultiplexing(多路复用和多路分解)3.2 Connectionless transport:UDP3.3 Principles of reliable data transfer3.4 Pipelined communication3.5 TCP: con…...