1 两数之和

解题思路:
\qquad 对每个数nums[i],仅需在数组中搜索target-nums[i]是否存在。
优化思路:
\qquad 首先能想到,利用哈希表O(1)查询target-nums[i]。
\qquad 建立map<int, vector<int>>的表能够处理重复元素,保证找到所有解。但是,能否进一步优化?
\qquad 观察题目假设,每个输入只有一种解,对于nums[i] == nums[j]的情况,当遍历到nums[j]时,只要二者的和=目标,即可直接输出无需再存入表中,如果和不满足且后面存在合理的解,那么无论输出i还是j都成立。所以建立的表无需处理重复的情况,可建表map<int,int>。
\qquad 到这里,思路已经足够简洁,但是能否进一步优化代码实现提高运行速度?
优化代码:
\qquad 1)使用unordered_map。
| map | unordered_map | |
|---|---|---|
| 特点 | 有顺序(key升序) | 元素排列无顺序 |
| 实现方式 | 红黑树 | 哈希表(散列表) |
| 时间效率 | O(logn) | O(1) |
| 存储效率 | 接近100% | 表中存在未使用的值 |
| 稳定性分析 | 平衡二叉树,十分稳定O(logn) | 不稳定,最快O(1),最坏O(n)【冲突过多时】 |
| 头文件 | <map> | <unordered_map> |
\qquad 注:写题大多时候适用 unordered_map,当对查询稳定性要求高、需要排序时用map。
\qquad 2)虽然函数返回值为vector<int>,但已知返回长度,可以不建立数组,直接返回{num1,num2}。
vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int,int> m;int n = nums.size();for(int i = 0; i < n; i++){if(m.count(target - nums[i]) == 0){m[nums[i]] = i;}else{return {i, m[target - nums[i]]};}}return {};}
参考博客:
https://blog.csdn.net/JCjunior/article/details/107471425
https://blog.csdn.net/qq_45890970/article/details/123955261
相关文章:
1 两数之和
解题思路: \qquad 对每个数nums[i],仅需在数组中搜索target-nums[i]是否存在。 优化思路: \qquad 首先能想到,利用哈希表O(1)查询target-nums[i]。 \qquad 建立map<int, vector<int>>的表能够处理重复元素&#x…...
NewStarCTF2023week2-Unserialize?
代码审计: 定义了一个eval类,该类下有一个私有变量cmd和公有成员函数destruct(),该函数在对象的所有引用都被删除或类被销毁时会自动调用; 调用该函数则会执行一个正则表达式进行正则匹配,过滤掉了一些常用命令和bas…...
OpenMesh 最优选点策略
文章目录 一、简介二、实现代码三、实现效果参考文献一、简介 继续沿着之前的思路:OpenMesh 网格顶点Quadric误差计算,有时候,无论是网格简化或是网格平滑,总会涉及到添加一个新的顶点的问题,那么新顶点应该怎么生成呢?以网格的简化操作为例,假设我们要合并两个顶点,也…...
服务器内存总量和内存条有差异是什么问题 103.239.244.X
服务器内存总量和内存条上标注的容量可能会存在一些差异,这是由于以下几个原因: 部分内存被保留给系统和其他硬件设备:在服务器中,一部分内存可能被保留给系统和其他硬件设备,比如显卡、网卡、RAID卡等。这些设备需要一…...
WPF DataGrid详细列表手动显示与隐藏
设置显示序号与折叠显示样式 <DataTemplate x:Key"dtNum"><Button BorderBrush"Transparent" Style"{x:Null}" Click"BtnRowDetail_ShowHideClick" FontSize"16" Background"Transparent"><Stack…...
Compose 组件 - 分页器 HorizontalPager、VerticalPager
一、概念 类似于 ViewPager,1.4 版本之前需要借助 accompanis 库,底层基于 LazyColumn、LazyRow 实现,在使用上也基本相同。默认情况下 HorizontalPager 占据屏幕的整个宽度,VerticalPager 会占据整个高度。 fun HorizontalPager(…...
Web3 招聘 | Bitget、MyShell、imToken、Arweave 多项目招聘中
「Web3 招聘」是 TinTinLand 为 Web3 项目和求职者创建的一个招聘信息汇集专栏。本栏目将持续更新区块链行业招聘信息,满足不同求职者与项目方的多样需求。欢迎各项目方联系 TinTinLand 发布职位需求,欢迎求职者关注 TinTinLand 获取最新招聘信息。 此外…...
通过HTTP发送大量数据的三种方法
在网络的早期时期,人们发送的文件大小仅为几KB。到了2023年,我们享受着高分辨率的MB级别图像,并在几GB的4K(即将是8K)视频中观看。 即使有良好的互联网连接,下载一个5GB的文件仍然需要一些时间。如果你拥有…...
【MySQL】索引和事物
目录 ♫索引 ♪什么是索引 ♪索引的数据结构 ♪索引的使用 ♫事务 ♪什么是事务 ♪事务的特性 ♪事务的使用 ♫索引 ♪什么是索引 索引是存储在磁盘上的一个数据结构,通过索引可以快速地定位到存储在磁盘上的数据。 索引在提高查询速度的同时,还提…...
win11下的VS2022+QT6+VTK9.2+PCL1.13.1联合开发环境配置及踩坑记录
准备工作: 安装VS2022:这个比较简单,网上随便找个教程就行 安装QT并为VS2022添加QT Creater插件:VS2022配置Qt6_vs2022 qt6-CSDN博客 安装PCL:vs2022配置pcl1.13.1_pcl配置-CSDN博客 安装PCL过程中本身也会安装VTK&…...
CEdit
1、https://www.cnblogs.com/milanleon/p/5626174.html 2、CEdit控件提供访问函数主要有: int GetWindowText(LPCTSTR lpszStringBuf,intnMaxCount) 获取控件文本,与ReadText()功能相同 void SetWindowText(LPCTSTR lpszString) 设置控件文本 void …...
vue3 自定义指令
Vue 除了内置的一系列指令 (比如 v-model 或 v-show) 之外,Vue 还允许你注册自定义的指令。 一个自定义指令由一个包含类似组件生命周期钩子的对象来定义。钩子函数会接收到指令所绑定元素作为其参数。 在setup语法糖中,任何以 v 开头的驼峰式命名的变量…...
用PolarDB|PostgreSQL提升通用ai机器人在专业领域的精准度
目录 背景 基本步骤讲解 Demo 演示 思考 如果不是用openai? 开源社区能干点啥? ai应用 收录专栏:PolarDB for PostgreSQL,后续将会发布PolarDB for PostgreSQL教程,大家感兴趣的话可以点个订阅呀! 简介: chat…...
idea中maven plugin提示not found
在终端中输入: mvn dependency:resolve 然后 解决了部分问题 Plugin org.apache.maven.plugins:maven-jar-plugin:3.1.0 not found 改为3.3.0了 Plugin maven-source-plugin:3.3.0 not found 改为 2.4 了 版本下降了 感觉后继有坑 待观察...
Hadoop3教程(七):MapReduce概述
文章目录 (68) MR的概述&优缺点(69)MR的核心思想MapReduce进程 (70)官方WC源码&序列化类型(71)MR的编程规范MapperReducerDriver (72)WordCount案例需…...
【Doris实战】Apache-doris-2.0.2部署帮助手册
Apache-doris-2.0.2部署帮助手册 校验时间:2023年10月11日 文章目录 Apache-doris-2.0.2部署帮助手册安装前准备安装包安装要求Linux 操作系统版本需求软件需求句柄需求关闭 Swap网络需求 部署规划用户规划目录规划免密需求 安装步骤配置JDK配置Doris文件 启动与停止…...
如何处理接口调用的频率限制
背景 接口提供方有调用频率限制的场景下,如何合理设计接口请求? 方案 采用Redis队列,利用 lpush 和 rpop 命令来实现 首先,将订单依次lpush写入Redis队列。定时任务通过 rpop 获取队列订单进行接口调用。 额外说明: 若想查看…...
Ubuntu 22.04上安装Anaconda,及 conda 的基础使用
1. 安装软件依赖包: apt install libgl1-mesa-glx libegl1-mesa libxrandr2 libxrandr2 libxss1 libxcursor1 libxcomposite1 libasound2 libxi6 libxtst6 2. 下载Anaconda安装包 使用 wget下载您从Anaconda网站复制的链接。您将把它输出到一个名为anaconda.sh的文…...
算法练习13——跳跃游戏II
LeetCode 45 跳跃游戏 II 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返回…...
算法|每日一题|只出现一次的数字|位运算
136.只出现一次的数字 力扣每日一题:136.只出现一次的数字 之前整理过本题及其扩展,详细说明了思路和做法,链接如下: 只出现一次的数字I,II,III 给你一个 非空 整数数组 nums ,除了某个元素只出…...
DeepSeek-OCR-2保姆级部署教程:5分钟在星图GPU平台一键搭建OCR服务
DeepSeek-OCR-2保姆级部署教程:5分钟在星图GPU平台一键搭建OCR服务 1. 为什么你需要这个OCR服务 如果你经常需要处理扫描文档、发票、合同或者各种纸质材料的数字化,肯定遇到过传统OCR工具的痛点——表格识别混乱、多栏文本顺序错乱、公式识别一塌糊涂…...
【架构心法】撕碎“实验室完美”的傲慢!直视滚刀与高压现场的物理混沌,论工业级控制系统的“防御性悲观主义”
摘要:在纯净的实验室里,“1”永远是“1”,“0”永远是“0”。但在重型机械的施工现场,物理法则充满了不可预测的恶意。无数工程师带着“代码没 Bug 就不会死机”的天真走向现场,最终却在震动、高温与电磁噪声的围剿下全…...
互联网大厂Java求职面试实录:谢飞机的三轮技术问答与深度解析
互联网大厂Java求职面试实录:谢飞机的三轮技术问答与深度解析 一、面试背景简介 本文模拟了某知名互联网大厂Java研发工程师岗位的面试过程,通过主角谢飞机与严肃面试官的真实问答,覆盖Java后端开发常见知识点,帮助读者系统梳理面…...
2026免费降AI率工具Top10:一键去机味 首选这款稳过检测
现在写论文用AI辅助早已是常态,但随之而来的AIGC检测卡得越来越严,熬了好几天改出来的稿子要是被判定AI率超标,打回重写都是轻的,耽误答辩进度才最让人头疼。 所以降AI、降低AI率已经成了毕业生的必备技能,只是市面上…...
人脸识别快速上手:Retinaface+CurricularFace镜像教程,简单易学
人脸识别快速上手:RetinafaceCurricularFace镜像教程,简单易学 1. 理解人脸识别黄金组合 在开始动手之前,我们先花两分钟了解Retinaface和CurricularFace这对黄金搭档: Retinaface:就像一位专业的摄影师,…...
Pixel Epic · Wisdom Terminal参数详解:显存配额与智力同步率调优指南
Pixel Epic Wisdom Terminal参数详解:显存配额与智力同步率调优指南 1. 认识像素史诗 智识终端 像素史诗 (Pixel Epic) 是一款基于 AgentCPM-Report 大模型构建的高端研究报告辅助终端。它将枯燥的科研过程转化为一场充满像素美学的RPG冒险,让用户以…...
BiliBiliCCSubtitle:3分钟掌握B站字幕下载与格式转换的终极指南
BiliBiliCCSubtitle:3分钟掌握B站字幕下载与格式转换的终极指南 【免费下载链接】BiliBiliCCSubtitle 一个用于下载B站(哔哩哔哩)CC字幕及转换的工具; 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle 你是否经常需要从B站视频中提取字幕内…...
OpenClaw学习助手:Gemma-3-12b-it生成错题本与定制复习计划
OpenClaw学习助手:Gemma-3-12b-it生成错题本与定制复习计划 1. 为什么需要AI学习助手? 作为一名经常需要处理大量学习资料的开发者,我一直在寻找能够提升学习效率的工具。传统的错题本整理方式需要手动抄写题目、标注知识点、寻找同类练习题…...
为什么99%的Python团队还没用上AOT?2026年官方方案的3大硬伤与2个绕过技巧(含patch diff与CI集成脚本)
第一章:Python 原生 AOT 编译方案 2026 概览与演进脉络Python 长期以来以解释执行和 JIT 辅助(如 PyPy)为主流运行范式,而原生 Ahead-of-Time(AOT)编译在 2026 年迎来实质性突破:CPython 官方正…...
OpenClaw未来展望:Qwen3-14B与本地自动化的5个进化方向
OpenClaw未来展望:Qwen3-14B与本地自动化的5个进化方向 1. 从工具到伙伴:OpenClaw的现状与定位 去年冬天,当我第一次在本地MacBook上部署OpenClaw时,它还是个需要手动配置JSON文件才能调用本地模型的"半成品"。如今看…...
