本系列的题目都是出自于"leetcode" 用博客记录是为了加强自己的记忆与理解,也希望能和大家交流更好更优的解题思路.

  题目:

  给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

  你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。

  示例:

  给定 nums = [2, 7, 11, 15], target = 9

  因为 nums[0] + nums[1] = 2 + 7 = 9
  所以返回 [0, 1] 解决方案1( java ):
  思路: 数组中某个元素的值为 c + x(未知数) = target,x = target-c, 那么依次遍历所有元素,设元素为c,求出x后检查x是否在数组中,如果存在就返回元素索引。
   暴力法:
      for(int i=0;i<nums.length;i++){
        for(int j=i+1;j<nums.length;j++){
          if(nums[j]=target-nums[i] ){ return new int[]{i,j} }
        }
      }    效率: 数组中有x个元素,最坏情况需要遍历所有元素x*x次,那么时间复杂度为 O (n^2 ) ; 由于没有使用任何临时变量,所以复杂度为 O(1);
    
  优化方案1:
     利用哈希。哈希表中存储数组中每个元素的值和坐标 ,可以通过值查询坐标 而不用遍历所有数组.
   一遍哈希:
    Map<Integer,Integer> map=new HashMap<>();
    for(int i=0;i<nums.length;i++ ){
      int key= target-nums[i];
      if(map.containsKey(key)){ return new int[]{map.get(key),i } }
      map.put(nums[i],i);
    }
    
    时间复杂度: 每个元素的对应解的查找只有一次,所以为 O(n),
空间复杂度: O(n) 需要额外空间来来存储数组的每个元素.    注意: 以上大部门内容转载于 leetcode,请注意~!!!

leetcode-算法系列-两数之和的更多相关文章

  1. leetcode算法1.两数之和

    哈喽!大家好,我是[学无止境小奇],一位热爱分享各种技术的博主! [学无止境小奇]的创作宗旨:每一条命令都亲自执行过,每一行代码都实际运行过,每一种方法都真实实践过,每一篇文章都良心制作过. [学无止 ...

  2. LeetCode算法1—— 两数之和

    给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums = [2, 7, 11, 15], target ...

  3. 每日一道 LeetCode (1):两数之和

    引言 前段时间看到一篇刷 LeetCode 的文章,感触很深,我本身自己上大学的时候,没怎么研究过算法这一方面,导致自己直到现在算法都不咋地. 一直有心想填补下自己的这个短板,实际上又一直给自己找理由 ...

  4. LeetCode :1.两数之和 解题报告及算法优化思路

    最近开始重拾算法,在 LeetCode上刷题.顺便也记录下解题报告以及优化思路. 题目链接:1.两数之和 题意 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 ...

  5. leetcode刷题--两数之和(简单)

    一.序言 第一次刷leetcode的题,之前从来没有刷题然后去面试的概念,直到临近秋招,或许是秋招结束的时候才有这个意识,原来面试是需要刷题的,面试问的问题都是千篇一律的,只要刷够了题就差不多了,当然 ...

  6. LeetCode 167:两数之和 II - 输入有序数组 Two Sum II - Input array is sorted

    公众号: 爱写bug(ID:icodebugs) 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index ...

  7. LeetCode | No.1 两数之和

    题目描述: Given an array of integers, return indices of the two numbers such that they add up to a speci ...

  8. leetCode刷题 | 两数之和

    两数之和: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数 ...

  9. Python算法_两数之和(01)

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数组中同一个元素不能使用两遍. ...

  10. Java算法练习——两数之和

    题目链接 题目描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利 ...

随机推荐

  1. php5.6开启curl

    1.   打开php安装目录,打开ext目录,是否有php_curl.dll扩展文件,如果没有该扩展文件,请在网上下载此文件. 2.   打开php.ini,找到  ;extension=php_cu ...

  2. 【译】利用Lombok消除重复代码

    当你在写Getter和Setter时,一定无数次的想过,为什么会有POJO这么烂的东西.你不是一个人!(不是骂人-)无数的开发人员花费了大量的时间来写这种样板代码,而他们本来可以利用这些时间做出更有价 ...

  3. Win32窗口消息机制 x Android消息机制 x 异步执行

    如果你开发过Win32窗口程序,那么当你看到android代码到处都有的mHandler.sendEmptyMessage和 private final Handler mHandler = new ...

  4. AutoCad 二次开发 文字镜像

    AutoCad 二次开发 文字镜像 参考:https://adndevblog.typepad.com/autocad/2013/10/mirroring-a-dbtext-entity.html 在 ...

  5. i7-9700也能安装Windows7

    商家说,i7-8700以上不支持Win7,只能安装Win10.我在手机网上也看过同样的说明,是微软与Intel联合行动,意在强迫用户升级到Win10.文章后面有,并不是不能装win7,是没有提供win ...

  6. C#控制打印机通过不同纸盒/进纸口进纸打印

    通常我们是通过程序操作打印机打印我们设置好的内容,但基本都是打印机默认进纸口打印:最近有一个通过C#程序控制两个进纸口分别进一张纸进行打印的需求,通过偿失找到了解决方案如下: 关于C#调用打印机打印的 ...

  7. Java描述设计模式(23):访问者模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景 1.场景描述 电竞是游戏比赛达到"竞技"层面的体育项目.利用电子设备作为运动器械进行的.人与人之间的智力对抗 ...

  8. 关于虚拟机克隆之后IP重新设置

    由于要搭建一套环境,本来搭建好的后来搞崩了,因为之前的虚拟机没有克隆过以及创建快照,所以今天就重新创建一套环境创建虚拟机快照,以及要解决克隆之后的IP重新设置问题. 1.查看本机orcl IP:[ro ...

  9. ASP使用ajax来传递中文参数的编码处理

    背景 asp的第一版是0.9测试版,自从1996年ASP1.0诞生,迄今20余载.虽然asp在Windows2000 IIS服务5.0所附带的ASP 3.0发布后好像再没有更新过了,但是由于其入手简单 ...

  10. String类的详细

    String str = new String("abc")创建过程 (1) 先定义一个名为str的对String类的对象引用变量放入栈中. (2) 然后在堆中(不是常量池)创建一 ...