[曾经沧海难为水]两数求和

本来可以面试成功就差HR面试了,现在给我说恒英也要机试题了。我现在肝机试题吧!大环境就是这,记录两周一个机试学习过程

V1:自己写的暴力法

V2:暴力法2:通过python的**str in list**方式逐个遍历,虽然代码看似简单,但每一次in操作的复杂度一样是O(n),所以总体复杂度O(n*n) 懒得去看了,都是暴力算法,没有研究的价值。

V3:hashmap

ref:1. 两数之和 - 力扣(Leetcode)

(23条消息) C++中的unordered_map用法详解_zou_albert的博客-CSDN博客

C++STL : unordered_map详解 - 知乎 (zhihu.com)

这个是人家的写的代码。我来理解学习下。

代码第一行:这是个啥?这块是定义一个nordered_map的容器

unordered_map<int,int> heap;

代码第二行:for循环

 for ( int i = 0 ; i < nums.size() ; i ++ ) {

代码第三行:题目要求,

int r = target - nums[i] ;

代码第四行:这是啥?怎么画风突变?

if(heap.count(r)) return {heap[r],i};

unordered_map.count(key)返回找到的个数,这块意思就是拿

举个测试例:拿着实例来帮助分析代码

nums[1,2,5,7] target=7

输出应该是[0,1]

找到key为nums[i]=2,i =1时,value为5的个数(为1),然后输出value 5对应索引值和key的索引值i

heap[r]取r对应的value,然后一起返回

代码第五行:

heap[nums[i]] = i;

这个是把key 和value关联起来

执行过程:

第一圈没找到,第二圈找到了

这块是无序的hash_map,并不会把5 2再输出一遍。

代码第六行:

return {};

return {};表示"返回使用空list-initializer初始化的函数返回类型的对象".确切的行为取决于返回的对象的类型

总结:重点V3代码中第四行和第五行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值