Leetcode刷题记(1)——两数加和

瞎扯~:太久太久没搬砖了,我不是一名合格的程序媛...看到实验室里师兄们都拿到了心仪的offer,真的是好羡慕鸭!其中一个师兄多次劝告我早点规划自己的方向,不要临时抱佛脚,这两年的互联网形势不是很好,算法岗竞争尤其激烈,要早点开始准备!在师兄一次又一次的苦口婆心中,我真的是无比羞耻现在才开始着手准备。一动手才发现自己也太菜了吧,本科的时候竟然没有碰过leetcode,现在刚用竟然折腾了半天才提交了第一道题,还是及其简单的两数加和问题...菜是原罪!!!

leetcode上使用c++时不用自己定义main函数,直接写方法,节省了IO的时间,意识到这一点就花了半天时间!!!

第一遍刷题开始!!!一些简单的题目只记录下想法,代码就不搬了,后面会整合到Github上。

努力的搬运工:

【1】两数加和    简单

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

解法:

(1)最容易想到的就是暴力求解了!!两次循环输出,但这种方法的时间复杂度是O(n^2),空间复杂度O(1),提交之后只超过了9.56%的用户,需要改进!

另外要熟悉c++中vector的用法了,leetcode给出的c++模板就是使用vector向量,摸索了好久才开始往里写代码。

(2)使用HashMap! HashMap是常数级的查找效率,因此自然想到遍历一遍数组,然后在hashmap中查找需要的数字,这样一来时间复杂度就减少为O(n),只不过需要使用空间换时间,因为要建立hashmap映射。使用hashmap时可以两遍哈希,先建立索引再进行查找;或直接一遍哈希,边查找边插入,查找到后直接返回。

知识点:vector(https://www.cnblogs.com/Nonono-nw/p/3462183.html)   ;  hashmap(https://www.cnblogs.com/tp-16b/p/9156810.html)

参考别人的笔记理解一下~

 

posted on 2019-05-05 14:24  不想睡觉的koala  阅读(127)  评论(0编辑  收藏  举报