题目:

给定一个整数数列,找出其中和为特定值的那两个数。

你可以假设每个输入都只会有一种答案,同样的元素不能被重用。

示例:

给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

分析:

可以直接遍历两遍数组,第一遍用target-nums[i],第二遍找nums数组中是否存在target-nums[i]这个数字,找到就返回两个数字组成的数组,这个方法时间复杂度比较大为O(n²)

还有可以用哈希表先把数组中的数字和对应的下标存储一遍,即数字作为键,下标作为值,存储,当遍历数组的时候用target-nums[i],得到差k,然后在map中找是否存在 k,找到即返回k所对应的value,也就是所对应的数组下标。这样时间复杂度就为O(n+l),快了好多。

代码:

//普遍方法O(n²)
class Solution {public int[] twoSum(int[] nums, int target) {int[] result = new int[2];for (int i = 0; i < nums.length; i++) {int v = target - nums[i];for (int j = 0; j < nums.length; j++) {if (nums[j] == v && j != i){result[0] = i;result[1] = j;return result;}}}return result;}
}
//哈希表存储查找
class Solution {public int[] twoSum(int[] nums, int target) {int[] result = new int[2];Map<Integer,Integer> map = new HashMap<>();for (int i = 0; i < nums.length; i++)map.put(nums[i],i);for (int i = 0; i < nums.length; i++) {int v = target - nums[i];if (map.containsKey(v) && i != map.get(v)){result[0] = i;result[1] = map.get(v);return result;}}return result;}
}

注意:

需要注意会错的是要判断一下上面代码中i的值和你找到的数组下标值是否相同,比如{3,2,4} target = 6, 会不会出现返回 0 0 这种错。

LeetCode1两数之和相关推荐

  1. LeetCode1. 两数之和

    LeetCode1. 两数之和 1. 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应 ...

  2. LeetCode1.两数之和

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

  3. 从leetcode1. 两数之和循序渐进(双指针,BST,哈希表)

    leetcode1. 两数之和 1.之前只知道桶排序那种标志数组,所以看到第一眼就想到那个方面去了.但在本题数组里面存储某个数出现的次数对该题是没有意义的,应该存储某个数出现的位置. 2.哈希表是优化 ...

  4. LeetCode1——两数之和

    最近在家拧三阶魔方,把初级的玩法掌握了,也就是可以还原六个面了,速度不快,但是也很兴奋.三阶魔方的初级玩法按照套路拧就可以了,每一步需要完成的任务,该步骤转动的方法基本都是固定的,而且变化也并不是特别 ...

  5. leetcode1. 两数之和--每天刷一道leetcode系列!

    来自:程序员面试 作者:reed,一个热爱技术的斜杠青年,程序员面试联合创始人 题目描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个整数,并返回他们 ...

  6. leetcode中文版python_Python版LeetCode1.两数之和

    啦啦啦,欢迎开启LeetCode刷题的旅程,这将是一段漫长而又艰辛的旅程.这道Two Sum的题目作为LeetCode的开篇之题,乃是经典中的经典,正所谓'平生不识TwoSum,刷尽LeetCode也 ...

  7. leetcode1 两数之和

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

  8. LeetCode-1两数之和

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

  9. LeetCode-1.两数之和(哈希表)

    题目内容 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/two-sum 给定一个整数数组 nums 和一个整数目标值 target,请你在该数 ...

最新文章

  1. 有趣的HTML5/CSS3艺术网站
  2. python中列表的sort方法_python中列表的sort方法使用详解
  3. Visual Studio Code里关于ESLint的错误消息
  4. date日期 和 date时间拼接_函数周期表丨时间丨值丨DATE
  5. 放弃 802.11 命名方式,Wi-Fi 6 标准公布,速度快 37%
  6. LeetCode刷题——64. 最小路径和
  7. 多元函数的泰勒展开Talor以及黑塞矩阵
  8. element ui的el-option需要默认
  9. Pyhon 登陆邮箱
  10. Pt100铂电阻与惠斯通电桥
  11. 宣传一个非常好看的鼠标指针样式
  12. android后台进程数目限制
  13. 加拿大 计算机硕士 哪个学校 便宜,加拿大计算机硕士成功案例1(学生成绩中)...
  14. elasticsearch7.6 词频统计
  15. 图片色值提取工具-Color Hunter
  16. 【数据结构PTA 7-158-161】
  17. mac修改默认python版本_Mac系统修改Python版本软链接
  18. python计算移动平均线_(转)简单移动平均线(Simple Moving Average,SMA) 定义及使用...
  19. 闪压压缩解压软件官方版
  20. python是什么邮箱_python发邮件详解,smtplib和email模块详解

热门文章

  1. digg bt_使用Digg REST API
  2. CruiseControl简介
  3. 常用的4种动态网页技术
  4. java base64 svg转png_svg转成png并下载
  5. [floyed][叉积][距离公式](JZOJ)泽泽在巴西
  6. 如何利用 LTE/4G 伪基站+GSM 中间人攻击攻破所有短信验证
  7. Threatbook合伙人李秋石:具有中国特色的安全威胁情报
  8. Linux zcat分页查看,Linux zcat初学者命令教程(5个示例)
  9. 元宇宙产品有哪些 元宇宙社交平台
  10. JAVA中JSON序列化和反序列化