zoukankan      html  css  js  c++  java
  • 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)

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

  • 相关阅读:
    day24<多线程>
    day23<File类递归练习>
    day22<IO流+>
    day21<IO流+&FIle递归>
    day20<IO流>
    day19<异常&File类>
    day18<集合框架+>
    day17<集合框架+>
    R语言中的标准输入,输出, 错误流
    Perl Spreadsheet::WriteExcel 模块自动生成excel 文件
  • 原文地址:https://www.cnblogs.com/wangjm63/p/10812832.html
Copyright © 2011-2022 走看看