LeetCode1两数之和
题目:
给定一个整数数列,找出其中和为特定值的那两个数。
你可以假设每个输入都只会有一种答案,同样的元素不能被重用。
示例:
给定 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两数之和相关推荐
- LeetCode1. 两数之和
LeetCode1. 两数之和 1. 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应 ...
- LeetCode1.两数之和
LeetCode1.两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你 ...
- 从leetcode1. 两数之和循序渐进(双指针,BST,哈希表)
leetcode1. 两数之和 1.之前只知道桶排序那种标志数组,所以看到第一眼就想到那个方面去了.但在本题数组里面存储某个数出现的次数对该题是没有意义的,应该存储某个数出现的位置. 2.哈希表是优化 ...
- LeetCode1——两数之和
最近在家拧三阶魔方,把初级的玩法掌握了,也就是可以还原六个面了,速度不快,但是也很兴奋.三阶魔方的初级玩法按照套路拧就可以了,每一步需要完成的任务,该步骤转动的方法基本都是固定的,而且变化也并不是特别 ...
- leetcode1. 两数之和--每天刷一道leetcode系列!
来自:程序员面试 作者:reed,一个热爱技术的斜杠青年,程序员面试联合创始人 题目描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个整数,并返回他们 ...
- leetcode中文版python_Python版LeetCode1.两数之和
啦啦啦,欢迎开启LeetCode刷题的旅程,这将是一段漫长而又艰辛的旅程.这道Two Sum的题目作为LeetCode的开篇之题,乃是经典中的经典,正所谓'平生不识TwoSum,刷尽LeetCode也 ...
- leetcode1 两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元 ...
- LeetCode-1两数之和
给定一个整数数组 nums 和一个整数目标值 target, 请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案. 但是,数组中同一个元素在答 ...
- LeetCode-1.两数之和(哈希表)
题目内容 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/two-sum 给定一个整数数组 nums 和一个整数目标值 target,请你在该数 ...
最新文章
- python27安装-linux下安装python27 nginx 和uwsgi
- Excel导入sqlserver
- 淘宝+天猫+闲鱼卖的翻新货店家汇总(持续更新)
- verilog出租车计价器
- 如何在Java中使用Lombok删除样板安装程序获取器
- 关于js函数未定义not defined引发的感想
- 好奇心、求知欲、理解力一直是我生命里最强大的驱动力​
- 特征抽取 PCA主成分分析
- 数据库 char nchar varchar nvarchar 区别
- qqzoneQQ空间漏洞扫描器的设计attilax总结
- 滚动时RecyclerView对ViewHolder的缓存与复用
- 小米8成功刷入Win11ARM64完整版系统
- 旋转屏幕时数据的保存与恢复
- CryEngine3 调试Shader方法
- ScheduledExecutorService 实现定时任务及取消任务
- 产品与服务最大的卖点,可能是销售最大的坑!
- 时间管理专题_软件篇02
- win11任务管理器怎么打开?win11任务管理器打开的技巧方法
- In download.file(sprintf(“https://ftp.ncbi.nlm.nih.gov/geo/series/%s/%s/matrix/%s“, : InternetOpen
- 线上nacos命名空间误删如何找回 实践笔记