最新要闻
- 【全球独家】18寸终极发烧游戏本!ROG枪神7 Plus超竞版评测:首发i9-13980HX多核暴涨40%
- 杭州法华寺月薪8万招聘和尚?传授72绝技?假的
- 铁锅“”开锅“”有科学依据吗?为什么厂家不帮忙弄好?
- 日本国产大飞机研发失败:研发耗时十余年
- 当前视讯!大批《LOL》玩家逃离国服挤爆台服 拳头调查处理中
- 头条:为何突然爆红网络?小胖俞涛回应“九转大肠梗” 吃起来确实酸爽
- 【环球报资讯】天马认领:独家供应一加Ace 2 1.5K灵犀触控屏
- 通讯!0糖0脂0卡 三种口味 哪吒气泡水1.66元/瓶史底
- 世界今亮点!逆天!男子称在国美买家电两年没到货 花费超两万
- 全球热消息:影驰首次涉足游戏显示器:27寸2K屏、165Hz高刷
- 奔驰史诗级调整:19款车将停产!不挣钱的不要
- 世界热门:宁德时代两大杀手级新品电池正式来了:新能源汽车市场要变天?
- 14.9mm纤薄机身惊艳:联想小新Air 14 2023烟霞紫亮相
- 观热点:1099元起 真我推出V30/V30t新机:天玑700入门U
- 环球热点评!3月1日上线全国外卖服务?抖音回应:无具体时间表
- 《GTA5》母公司T2 CEO:ChatGPT等AI将提高游戏行业的标准
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
【全球报资讯】【LeetCode哈希表#4】梦开始的地方:两数之和(map),以及关于容器map的一些代码技巧
两数之和
力扣题目链接(opens new window)
(资料图片仅供参考)
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
思路
暴力法
两层for循环,一个一个加起来然后判断呗
class Solution {public: vector twoSum(vector& nums, int target) { for(int i = 0; i < nums.size(); i++){ for(int j = i + 1; j < nums.size(); j++){ if(nums[i] + nums[j] == target){ return {i, j}; } } } //不满足条件返回空 return {}; }};
哈希法
没错,这个题也可以用哈希法去解
只不过这里我们使用的哈希结构有所不同,先分析一下解题思路
题目要求我们找到数组中两个数,这两个数加起来要等于输入的target值
假设,现在遍历到数组的第一个数 A
C = target - A;
那么如果数组中存在 C的话,我们就找到了两个符合条件的数{A, B},返回两者的下标即可
因此,我们需要有一个数据结构去存放已经遍历过的值和该值在数组中的下标
这是一个key-value的结构,对应到c++中可以通过map容器实现
C++中map,有三种类型:
映射 | 底层实现 | 是否有序 | 数值是否可以重复 | 能否更改数值 | 查询效率 | 增删效率 |
---|---|---|---|---|---|---|
std::map | 红黑树 | key有序 | key不可重复 | key不可修改 | O(log n) | O(log n) |
std::multimap | 红黑树 | key有序 | key可重复 | key不可修改 | O(log n) | O(log n) |
std::unordered_map | 哈希表 | key无序 | key不可重复 | key不可修改 | O(1) | O(1) |
std::unordered_map 底层实现为哈希表,std::map 和std::multimap 的底层实现是红黑树。
因为本题并不需要key有序,所以使用unordered_map效率更高
那么key对应什么?value又对应什么呢?
我们想知道的是,某个值(当前遍历值与target作差之后的差值)是否被遍历过,即查找的对象是某个值,因此需要将遍历得到的数组元素值作为key,其下标作为value
流程
1、遍历数组,向unordered_map中查询当前遍历值对应的值是否被遍历过
2、如果查询到匹配值,返回该值对应的value,与当前遍历值的index组成一对结果
代码
主要障碍是对c++里面一些容器的操作不熟练(比如这里的map容器),这里直接粘的卡哥的代码
class Solution {public: vector twoSum(vector& nums, int target) { //声明一个unordered_map std::unordered_map map; for(int i = 0; i < nums.size(); i++) { // 遍历当前元素,并在map中寻找是否有匹配的key // auto用于自动给迭代对象一个相应的数据类型 auto iter = map.find(target - nums[i]); //这里是定义了一个map的iterator吗?没见过这种写法 //end()指向的最后一个元素的后一个位置 //iter != map.end()是什么意思?其常被用于map容器遍历时的判断条件 // if(iter != map.end()) { //找到了 /* (*it).first会得到key,(*it).second会得到value。这等同于it->first和it->second*/ //{匹配值下标, 当前遍历值的下标} return {iter->second, i}; } // 如果没找到匹配对,就把访问过的元素和下标加入到map中 map.insert(pair(nums[i], i)); } return {}; }};
后续需要对c++容器的使用做强化训练(专题:c++刷题常用容器简介,TBD)
关于iter != map.end()
这里需要从它的上一行代码开始说起
摘自《C++ Primer Plus第6版》:
C++11新增了一个工具,让编译器能够根据初始值的类型推断变量的类型。为此,它重新定义了auto的含义。auto是一个C语言关键字,但很少使用,有关其以前的含义,请参阅第9章。在初始化声明中,如果使用关键字auto,而不指定变量的类型,编译器将把变量的类型设置成与初始值相同:
那么auto iter = map.find(target - nums[i]);
的含义是:
定义一个 迭代器iter用于在 map中寻找 target - nums[i]
如果 map.find(target - nums[i])
等于 map.end()
,那么键就没有找到。
否则,find会返回一个指向找到的元素的迭代器。
上述题解中的代码可写为:
std::unordered_map map;unordered_map ::iterator it = map.find(target - nums[i]);if (i != m.end()) { /* 找到了, 此时i->first就是匹配值下标(key), i->second是当前遍历值的下标(value) */}else { /* 没找到f */ }
参考:https://stackoverflow.com/a/1939962/15272780
-
【全球报资讯】【LeetCode哈希表#4】梦开始的地方:两数之和(map),以及关于容器map的一些代码技巧
两数之和力扣题目链接(opensnewwindow)给定一个整数数组nums和一个目标值target,请你在该数组中找出和...
来源: -
【全球独家】18寸终极发烧游戏本!ROG枪神7 Plus超竞版评测:首发i9-13980HX多核暴涨40%
18寸终极发烧游戏本!ROG枪神7Plus超竞版评测:首发i9-13980HX多核暴涨40%
来源: 【全球报资讯】【LeetCode哈希表#4】梦开始的地方:两数之和(map),以及关于容器map的一些代码技巧
【全球独家】18寸终极发烧游戏本!ROG枪神7 Plus超竞版评测:首发i9-13980HX多核暴涨40%
杭州法华寺月薪8万招聘和尚?传授72绝技?假的
铁锅“”开锅“”有科学依据吗?为什么厂家不帮忙弄好?
《分布式技术原理与算法解析》学习笔记Day04
【独家】ASP.NET Core+Element+SQL Server开发校园图书管理系统(四)
快消息!E. Monsters (hard version)
日本国产大飞机研发失败:研发耗时十余年
当前视讯!大批《LOL》玩家逃离国服挤爆台服 拳头调查处理中
Blazor封装一个显示Markdown的组件
高层次综合器Vivado HLS的概念与特点[原创www.cnblogs.com/helesheng]
头条:为何突然爆红网络?小胖俞涛回应“九转大肠梗” 吃起来确实酸爽
【环球报资讯】天马认领:独家供应一加Ace 2 1.5K灵犀触控屏
世界报道:HashMap源码分析 (基于JDK1.8)
cmd的一些命令
焦点速看:Python教程:高级特性
天天快看点丨vue3 | slots
通讯!0糖0脂0卡 三种口味 哪吒气泡水1.66元/瓶史底
世界今亮点!逆天!男子称在国美买家电两年没到货 花费超两万
全球热消息:影驰首次涉足游戏显示器:27寸2K屏、165Hz高刷
奔驰史诗级调整:19款车将停产!不挣钱的不要
世界热门:宁德时代两大杀手级新品电池正式来了:新能源汽车市场要变天?
VGA、TFT显示模块——verilog实现
天天看热讯:智能运维|AIRIOT智慧光伏管理解决方案
定时任务
14.9mm纤薄机身惊艳:联想小新Air 14 2023烟霞紫亮相
观热点:1099元起 真我推出V30/V30t新机:天玑700入门U
环球热点评!3月1日上线全国外卖服务?抖音回应:无具体时间表
《GTA5》母公司T2 CEO:ChatGPT等AI将提高游戏行业的标准
记录--实时音视频功能简析(live-pusher与live-player)
当前资讯!全景剖析阿里云容器网络数据链路(三):Terway ENIIP
全球看点:Amazon RDS 教程_编程入门自学教程_菜鸟教程-免费教程分享
整合MQTT
当前简讯:京东一面:MySQL 中的 distinct 和 group by 哪个效率更高?问倒一大遍。。
业界功率最高!一加27W冰点散热背夹发布 219元
蔚来:自家充电桩仅24%时间给蔚来充电 比亚迪、特斯拉用爽了
世界微资讯!ChatGPT幕后创始人拿微软100亿 是在下一步大棋
【热闻】你出国耍吗?多条国际航班机票降至千元 泰国往返国内不到2000元
焦点观察:日产扛把子!新款轩逸/轩逸e-POWER官图发布:能救市吗?
3.SpringSecurity+登录功能+jwt校验过滤器+redis配置
当前消息!K8S的基础概念
今亮点!elementui中el-table表头动态筛选条件未及时更新问题解决
世界新消息丨C#高级编程2
RocketMQ Streams拓扑构建与数据处理过程
全球动态:一加Ace 2全球首发1.5K灵犀触控屏:120Hz刷新率、1450nit高亮度
每日消息!知名玩家爆料魔兽国服已签新代理:暴雪相中上海一公司
全球热点!土耳其再发生5.2级地震:中国卫星传回土耳其地震震中图像
全麦+黑麦:舌里0脂肪全麦面包14.9元2斤40片大促
国产版ChatGPT!百度版已成功注册ERNIE商标:最快3月开放
强大的word插件:不坑盒子下载安装使用图文讲解
ChatGPT横空出世,虽然会改BUG,但程序员也不用慌
天天简讯:强大的word插件,让工作更高效:不坑盒子 2023版
pandas 用户数据分析2
车顶维权女车主:重启战斗模式 希望今年能明确特斯拉案件结果
小米首款二合一笔记本!小米笔记本12.4图赏
每日速看!陪伴十年被撞报废!男子躲过一劫磕头跪别爱车 网友:它值得
环球视点!一加Ace 2普及16GB超大内存:44个应用保活
世界观点:首批入手三星Galaxy S23用户开机后大跌眼镜:系统吃掉60GB存储空间
【天天速看料】【算法训练营day41】LeetCode343. 整数拆分 LeetCode96. 不同的二叉搜索树
今日观点!亚马逊商城入门教程_编程入门自学教程_菜鸟教程-免费教程分享
天天快资讯:计算机视觉——SSD和YOLO简介
焦点热议:CTF之WEB学习路线规划
当前焦点!第一个编译器
上海网红“安福路小公主”接代言引热议:网友感叹辣眼睛的大妈无敌了
全球播报:13代CPU+40系GPU 笔记本和台式机区别有多大?
微头条丨100%纯棉 班尼路短袖99元4件包邮:13色可选
今日热文:ChatGPT概念全球爆火!我国人工智能相关企业超百万家
没法出二手“回血”了!索尼称PS VR2初期将仅推出数字版游戏
视讯!火山引擎ByteHouse助力中国地震台网中心,快速构建一站式实时数仓
实战分享 | 金融数据采集报送平台实践
观天下!我是如何用CAP和BASE两个基础理论卷死其他组员的?
环球信息:【踩坑记录】@Transactional注解回滚不生效问题
世界微资讯!开心档-软件开发入门之MongoDB 覆盖索引查询
世界动态:89%美国大学生用写作业!揭秘爆红ChatGPT之父:应对核末日狂囤黄金、中学就出柜
当前快报:2023年首次更新!微信Mac版3.7.0发布:终于支持图片文字提取
世界观察:Github、Gitee优秀的开源项目
【ChatGPT 注册】
【天天聚看点】ChatGPT让苹果急了!消息称苹果将于下周召开内部AI峰会
环球快资讯丨299元!小米对讲机2S发布:市区5公里通话 100个对讲频道
热议:4个小号给大号浇水 缴电费再退骗蚂蚁森林能量被封号!法院判了
人工智能立大功!AI筛查阿尔茨海默病准确率达75%
每日视点!19999元!尼康发布尼克尔Z 85mm f/1.2 S镜头:模特发丝根根可数
观天下!从这些爆款小游戏中,你看到了什么?
Docker容器使用 (入门到精通)
HGAME_2023_WEB_WP_WEEK3
2799限量抢!小米Civi 2潮流版预售 网友:我一男生都表示太好看
世界报道:豆瓣仅5.7分 漫威超英大片《黑豹2》国内首映 开场票房就被《流浪地球2》超越
每日速递:男子花两千元套圈 套中两台宏光汽车:本人回应只要一辆 做人留一线
国产纯电两门跑车!哪吒E实车亮相:动力暴躁
焦点!百度类ChatGPT产品“文心一言”公开:股价应声上涨13%
诺基亚800c手机上市价格是多少?诺基亚800c手机参数
breeno指令是干什么用的?breeno指令在哪里?
戴尔笔记本电脑换电池大概多少钱?戴尔笔记本电脑开机黑屏没反应怎么办?
格力空调型号在哪里查看?格力空调型号一览表匹数
美的冰箱质量怎么样?美的冰箱怎么调温度?
天天视讯!Redis的十六种应用场景
全球短讯!一款备受欢迎的用户脚本管理器插件TampermonKey-油猴脚本管理器安装与使用
越狱最后各人物的结局是什么?电视剧越狱演员表
曾志伟的身高是什么?曾志伟个人资料
12月是什么星座?描写12月你好的优美说说