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

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

1、暴力枚举:

class Solution {public int[] twoSum(int[] nums, int target) {for (int i = 0; i < nums.length; i++) {for (int j = i + 1; j < nums.length; j++) {if (nums[i] + nums[j] == target) {return new int[]{i,j};}}}return new int[0];}
}

这是最容易想到的方法,两层循环,逐一进行枚举,直到两数之和等于target为止,时间复杂度为O(N^2)。

2、哈希表:

class Solution {public int[] twoSum(int[] nums, int target) {Map<Integer, Integer> hashmap = new HashMap<Integer, Integer>();for(int i = 0;i<nums.length;i++){if(hashmap.containsKey(target-nums[i])){return new int[]{hashmap.get(target-nums[i]),i};}else{hashmap.put(nums[i],i);}}return new int[]{};}}

方法一的时间复杂度较高的原因是寻找 target - x 的时间复杂度过高。方法二借助于哈希表能够快速寻找数组中是否存在目标元素。对于每一个 nums[i],我们首先查询哈希表中是否存在一个数等于target - nums[i],如果没有便将nums[i] 以及他的下标 i 插入到哈希表中,如果满足后便将那个数的下标 i 取出,时间复杂度为O(N)。

知识补充:

1、HashMap是基于哈希表实现的,每一个元素是一个key-value对;

2、Contains()用于判断一个字符串中是否包含另外一个字符串;

3、ContainsKey()主要用于判断map中是否包含指定的键名;

两数之和——梦开始的地方相关推荐

  1. 两数之和---------梦开始的地方

    前言 本题为力扣官网第一题. 题目:力扣 一.问题分析 直接暴力求解,两层for循环,第一层for循环遍历数组中每一个元素,第二层循环遍历从第一次循环元素之后遍历数组元素,寻找满足条件的两数之和为ta ...

  2. 力扣-两数之和 (梦开始的地方)

    力扣-两数之和(梦开始的地方) 来源:力扣网 https://leetcode.cn/problems/two-sum/ 题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组 ...

  3. 【前端来刷LeetCode】两数之和与两数相加

    大部分玩前端的小伙伴,在算法上都相对要薄弱些,毕竟调样式.调兼容就够掉头发的了,哪还有多余的头发再去折腾. 确实在前端中需要使用到算法的地方是比较少,但若要往高级方向发展,算法的基本功就非常重要啦.对 ...

  4. 两数之和,两数相加(leetcode)

    我们都知道算法是程序员成长重要的一环,怎么才能提高算法呢, 出来在网上看视频之外,动手练习是非常重要的.leetcode 就是一个非常好的锻炼平台. 1. 两数之和,在 leetcode 里面是属于 ...

  5. LeetCode题库整理【Java】—— 1两数之和

    LeetCode题库整理[Java] 1.两数之和 题目:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数.你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nu ...

  6. 【leedcode刷题1】两数之和

    [leedcode刷题 1]两数之和 大家好,小生不才,从今天开始将自己刷题的过程记录在博客中,因为能力有限,所以如果有什么错的地方希望大家积极指正,不胜感激. 题目 给定一个整数数组 nums 和一 ...

  7. 领扣LintCode算法问题答案:56. 两数之和

    56. 两数之和 描述 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target. 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标.注意这里下标的范围是 ...

  8. linux-shell脚本-利用shell函数计算两数之和--思考return原理

    一.实例1(错误代码) 在shell脚本的学习过程中,遇到定义一个带有return语句的函数,来计算两数之和,代码如下: #!/bin/bash funWithReturn(){echo " ...

  9. 青铜三人行之两数之和

    先说一个消息,为了方便互相交流学习,青铜三人行建了个微信群,感兴趣的伙伴可以扫码加下面的小助手抱你入群哦! 哈喽,大家好,欢迎来到青铜三人行的每周一题现场.在接下来的时间里,我们三人(Helen.书香 ...

最新文章

  1. 华为秘密作战计划曝光,重注研发AI芯片挑战英伟达,轮值董事长挂帅
  2. 关于request取中文字符串变?的解决办法
  3. NLP之TEA:自然语言处理之文本情感分析的简介、算法、应用、实现流程方法、案例应用之详细攻略
  4. mysql5.5 replication_mysql5.5 master-slave(Replication)配置
  5. 贝叶斯网络的应用实例一
  6. Java 持有对象简要笔记
  7. Git 操作实战示例
  8. Spark 计算人员二度关系
  9. html5ie11缩放,IE 11 页面缩放后再次打开不能保存之前的缩放比例
  10. C++学习系列(二)—— 核心编程(面向对象)
  11. SCI论文写作中常用的连接词和短语
  12. 安卓app里播放youtube视频
  13. 使用selenium模仿手机浏览器访问淘宝网页
  14. Thrift IDL示例文件
  15. qq邮箱mx服务器,QQ域名邮箱管理系统MX记录是什么?怎么添加设置?
  16. mysql-query()expects_mysql_query() expects parameter 2 to be resource, string given in [duplicate]
  17. excel服务器项目管理软件,用excel做项目管理系统
  18. 高精密应变片0.01g信号采集方案分享
  19. sql server 计算2个日期相差的 天数,月数,年数,日期运算/计算
  20. 使用vue视频播放器上增加云台控制面板

热门文章

  1. 德国监管机构将对ICO进行严格审查
  2. Linux下 gcc/g++ 版本切换与CMake各版本安装
  3. 【源码】牛顿-拉斐逊法求解非线性方程组
  4. Debian (Linux)安装UFW防火墙
  5. NOIP2016全国信息学分区联赛提高组第二试 组合问题
  6. MBR膜应用于农村污水治理,改善天然水体污染及人居环境
  7. 字节跳动2019春招研发机试题  万万没想到之聪明的编辑
  8. 分省就业人数数据(2000-2018年)
  9. 使用ffmpeg将GoPro长延时的jpg照片转换成视频文件(一条命令)
  10. 基于单片机的手机无线充电器系统设计电路(毕业设计资料)