LeetCode 热题 100——day1两数之和
✨ 把代码写进星轨用逻辑丈量宇宙。导航链接个人主页 星轨初途基础语言专栏 C语言 、 数据结构C 进阶专栏 C学习竞赛类 、⚙️ C专栏开发类刷题实战专栏 算法及编程题分享 、 力扣每日刷题分享文章目录两数之和题目链接方法一暴力枚举复杂度分析代码实现方法二哈希表复杂度分析代码实现方法三排序 双指针复杂度分析代码实现总结两数之和题目链接LeetCode两数之和方法一暴力枚举最直接的思路是使用两层循环枚举数组中所有不同的下标组合(i, j)。对于每一组下标判断nums[i]nums[j]target如果条件成立就返回这两个元素的下标。这种方法不需要额外的数据结构代码比较容易理解但当数组长度较大时执行效率较低。复杂度分析时间复杂度O(N^2)需要枚举所有可能的下标组合空间复杂度O(1)只使用了少量额外变量。代码实现classSolution{public:vectorinttwoSum(vectorintnums,inttarget){intnnums.size();intl-1,r-1;for(inti0;in;i){for(intji1;jn;j){if(nums[i]nums[j]target){li,rj;break;}}}return{l,r};}};方法二哈希表对于当前元素nums[i]我们需要寻找的另一个数为target-nums[i]我原本还想使用数组记录每个数是否出现但题目中的数值范围比较大并且还可能出现负数直接开数组会造成大量空间浪费。因此可以使用哈希表保存已经遍历过的元素及其下标数值-下标遍历数组时先检查哈希表中是否已经存在target - nums[i]如果存在说明已经找到了答案如果不存在就将当前元素和下标存入哈希表。需要注意必须先查找再插入当前元素避免同一个元素被使用两次。复杂度分析时间复杂度O(N)每个元素只需要进行一次哈希表查找和插入空间复杂度O(N)最坏情况下需要将所有元素存入哈希表。代码实现classSolution{public:vectorinttwoSum(vectorintnums,inttarget){unordered_mapint,intcnt;intl-1,r-1;for(inti0;inums.size();i){if(cnt[target-nums[i]]){li,rcnt[target-nums[i]]-1;}cnt[nums[i]]i1;//以免查找时cnt[target-nums[i]]0无法判断是没有还是下标为0}return{l,r};}};也使用find()判断目标值是否存在可以避免operator[]在查找时自动向哈希表中插入新的键值对。方法三排序 双指针原数组是无序的因此不能直接使用双指针。我们可以先将每个元素的数值和它在原数组中的下标绑定在一起pair数值,原下标然后按照数值从小到大排序。排序完成后设置两个指针l指向当前最小的元素r指向当前最大的元素。计算num[l].firstnum[r].first根据计算结果移动指针如果两数之和大于target说明当前和太大需要让右指针左移如果两数之和小于target说明当前和太小需要让左指针右移如果两数之和等于target返回两个元素在原数组中的下标。因为排序会改变元素原来的位置所以必须额外保存每个元素的原下标。复杂度分析时间复杂度O(NlogN)主要开销来自排序空间复杂度O(N)需要额外保存元素数值及其原下标。代码实现classSolution{public:vectorinttwoSum(vectorintnums,inttarget){// first 保存元素值second 保存元素原下标vectorpairint,intnum(nums.size());for(inti0;inums.size();i){num[i].firstnums[i];num[i].secondi;}// pair 默认优先按照 first 从小到大排序sort(num.begin(),num.end());intl0;intrnum.size()-1;while(lr){intsumnum[l].firstnum[r].first;if(sumtarget){// 当前和太大右指针左移--r;}elseif(sumtarget){// 当前和太小左指针右移l;}else{// 返回两个元素在原数组中的下标return{num[l].second,num[r].second};}}return{};}};这种方法通过排序将问题转换成了有序数组中的双指针查找。总结方法核心思路时间复杂度空间复杂度暴力枚举使用两层循环枚举所有下标组合判断两数之和是否等于targetO(N^2)O(1)哈希表遍历数组时使用哈希表查找target - nums[i]是否已经出现O(N)O(N)排序 双指针保存元素原下标并排序然后使用左右双指针逐渐逼近目标值O(NlogN)O(N)三种方法各有特点暴力枚举思路最直接也是最好想到哈希表时间复杂度最低排序 双指针能够帮助我们理解双指针算法的使用前提和移动规律。在实际刷题时可以先写出暴力解法再根据题目数据范围考虑使用哈希表或双指针进行优化。

相关新闻

电赛电源驱动电路设计:从晶体管到H桥的实战指南

电赛电源驱动电路设计:从晶体管到H桥的实战指南

最近在准备电赛,特别是电源类题目时,发现很多同学在驱动电路设计上容易卡壳。无论是驱动电机、LED还是MOS管,一个稳定可靠的驱动电路往往是整个系统成败的关键。网上资料虽然多,但要么过于理论,要么零散不成体系&#…

2026/8/4 5:30:06 阅读更多 →
智能车电磁导航传感器设计:从LC谐振电路到位置解算实战

智能车电磁导航传感器设计:从LC谐振电路到位置解算实战

1. 项目概述:电磁杆在智能车竞赛中的核心地位最近在准备第二十一届全国大学生智能车竞赛,和几个学弟学妹交流时,发现他们对于“电磁杆”这个核心传感器组件,理解上存在不少模糊地带。有人把它简单等同于一个能检测磁场的“天线”&…

2026/8/4 7:21:34 阅读更多 →
顺德区消防系统维修哪家好

顺德区消防系统维修哪家好

在顺德区,完善可靠的消防系统维修服务对于各类场所来说至关重要。但不少人在选择消防维修公司时,会遇到各种痛点。下面为你介绍顺港消防,能有效解决这些问题。消防维保响应慢,设备故障处理不及时很多消防维保公司响应不及时&#…

2026/8/3 2:38:02 阅读更多 →

最新新闻

【单片机毕业设计推荐】基于 STM32 的人体生理参数监测装置设计与实现 基于 STM32 的心率血氧体温采集与蓝牙监测系统设计(013205)

【单片机毕业设计推荐】基于 STM32 的人体生理参数监测装置设计与实现 基于 STM32 的心率血氧体温采集与蓝牙监测系统设计(013205)

文章目录20 个相关毕业设计备选题目项目研究背景摘要总体方案核心功能技术路线项目演示关于我们项目案例源码获取温馨提示:本人主页置顶文章(点我)有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)有 CSDN 平台官…

2026/8/4 9:34:36 阅读更多 →
A-Lin南昌站和歌迷双向整活 「歌迹」现场接梗名场面频出

A-Lin南昌站和歌迷双向整活 「歌迹」现场接梗名场面频出

7月31日、8月2日,天生歌姬A-Lin黄丽玲携「歌迹 Journey」巡回演唱会在南昌国际体育中心体育馆,为豫章歌迷奉上诚意满满的视听盛宴。两晚演出不仅安排南昌限定歌单彩蛋、全新舞台造型,舞台之上趣味互动更是不间断:超近距离与歌迷互…

2026/8/4 9:34:36 阅读更多 →
5分钟掌握Driver Store Explorer:Windows驱动管理的终极免费工具,轻松释放宝贵磁盘空间

5分钟掌握Driver Store Explorer:Windows驱动管理的终极免费工具,轻松释放宝贵磁盘空间

5分钟掌握Driver Store Explorer:Windows驱动管理的终极免费工具,轻松释放宝贵磁盘空间 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 你是否发现Windows系统盘…

2026/8/4 9:34:36 阅读更多 →
基于Netty构建高性能WebSocket服务器:从原理到实战部署

基于Netty构建高性能WebSocket服务器:从原理到实战部署

最近在开发一个需要实时消息推送的项目时,遇到了一个头疼的问题:如何高效、稳定地处理海量WebSocket连接?传统的Spring WebSocket在管理连接、广播消息和集群扩展方面显得有些力不从心。经过一番调研和选型,最终锁定了Netty这个高…

2026/8/4 9:34:36 阅读更多 →
SpringBoot+Vue小区物业管理系统开发实战

SpringBoot+Vue小区物业管理系统开发实战

1. 项目概述 这个基于SpringBootVue的小区物业管理系统是一个典型的前后端分离架构项目,非常适合作为计算机相关专业的毕业设计、课程设计或自学练手项目。系统采用JavaMySQL技术栈,涵盖了物业管理中的核心业务流程,包括业主管理、收费管理、…

2026/8/4 9:34:36 阅读更多 →
Unity Shader Graph线性混合蒙皮节点:原理、应用与实战指南

Unity Shader Graph线性混合蒙皮节点:原理、应用与实战指南

1. 项目概述:从“皮”到“骨”的动画魔法 在实时渲染和游戏开发的世界里,让一个静态的3D模型“活”起来,流畅地做出奔跑、跳跃、攻击等动作,是每个开发者都要面对的核心挑战。这背后的关键技术之一,就是蒙皮&#xff0…

2026/8/4 9:33:36 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标:掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码:多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者:邓兵、刘建国通讯单位:清华大学DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清洁能源技术与电子器件不可或缺的核心原料,然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/3 4:58:13 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/3 1:53:31 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/4 5:26:40 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/3 13:07:03 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/3 5:19:38 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/3 8:27:36 阅读更多 →