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)

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

  • 相关阅读:
    octotree神器 For Github and GitLab 火狐插件
    实用篇如何使用github(本地、远程)满足基本需求
    PPA(Personal Package Archives)简介、兴起、使用
    Sourse Insight使用过程中的常使用功能简介
    Sourse Insight使用教程及常见的问题解决办法
    github 遇到Permanently added the RSA host key for IP address '192.30.252.128' to the list of known hosts问题解决
    二叉查找树的C语言实现(一)
    初识内核链表
    container_of 和 offsetof 宏详解
    用双向链表实现一个栈
  • 原文地址:https://www.cnblogs.com/wangjm63/p/10812832.html
Copyright © 2011-2022 走看看