题目:

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

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

示例:

给定 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. python27安装-linux下安装python27 nginx 和uwsgi
  2. Excel导入sqlserver
  3. 淘宝+天猫+闲鱼卖的翻新货店家汇总(持续更新)
  4. verilog出租车计价器
  5. 如何在Java中使用Lombok删除样板安装程序获取器
  6. 关于js函数未定义not defined引发的感想
  7. 好奇心、求知欲、理解力一直是我生命里最强大的驱动力​
  8. 特征抽取 PCA主成分分析
  9. 数据库 char nchar varchar nvarchar 区别
  10. qqzoneQQ空间漏洞扫描器的设计attilax总结
  11. 滚动时RecyclerView对ViewHolder的缓存与复用
  12. 小米8成功刷入Win11ARM64完整版系统
  13. 旋转屏幕时数据的保存与恢复
  14. CryEngine3 调试Shader方法
  15. ScheduledExecutorService 实现定时任务及取消任务
  16. 产品与服务最大的卖点,可能是销售最大的坑!
  17. 时间管理专题_软件篇02
  18. win11任务管理器怎么打开?win11任务管理器打开的技巧方法
  19. In download.file(sprintf(“https://ftp.ncbi.nlm.nih.gov/geo/series/%s/%s/matrix/%s“, : InternetOpen
  20. 线上nacos命名空间误删如何找回 实践笔记

热门文章

  1. 什么是“分布式应用系统”
  2. 苹果HomeKit如此被偏爱的原因是什么?
  3. 基于Java毕业设计新生报到管理系统源码+系统+mysql+lw文档+部署软件
  4. JAVA JDBC 增删改查简单例子
  5. depth estimation笔记
  6. 19丨决策树(下):泰坦尼克乘客生存预测
  7. Context的用法
  8. Docker基于容器制作httpd镜像(使用nfs共享存储部署一个网站)
  9. 视频-MediaCodec
  10. 一键整理硬盘所有的照片和视频,手机照片的自动备份---多点相册