苟哥的笔记本
首页
文章归档
关于
文章归档
关于
首页
算法
正文
求两数之和 | leetcode
苟哥
2020-01-28 AM
2211℃
0条
## 题目描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] ## 解法一 使用暴力解法,嵌套循环求和判断,时间复杂度为O(n^2): ```java class Solution { public int[] twoSum(int[] nums, int target) { int[] res = new int[2]; for(int i = 0; i < nums.length - 1; i++){ for(int j = i + 1; j < nums.length; j++){ if(nums[i] + nums[j] == target){ res[0] = i; res[1] = j; break; } } } return res; } } ``` 执行结果: ![](http://images.kuryun.com/blog/typecho/1580178540.png) ## 解法二 使用哈希表,降低计算维度,时间复杂度为O(n): ```java class Solution { public int[] twoSum(int[] nums, int target) { int[] res = new int[2]; HashMap
hash = new HashMap
(); for(int i = 0; i < nums.length; i++){ if(hash.containsKey(nums[i])){ res[0] = hash.get(nums[i]); res[1] = i; return res; } // 将可能的数存入hashmap,差值作为键 ,下标作为值 hash.put(target-nums[i], i); } return res; } } ``` 执行结果: ![](http://images.kuryun.com/blog/typecho/1580178568.png)
标签:
算法
,
Java
,
力扣
,
leetcode
,
求两数之和
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
http://www.i366211.com/archives/85/
上一篇
安装homebrew出现“curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused”
下一篇
Intellij IDEA 中JAVA常用配置项总结
取消回复
评论啦~
提交评论
栏目分类
软件安装
10
开发工具
8
算法
2
测试
1
架构
3
填坑记
2
开源
6
科普
6
私域
2
读书笔记
4
编程
48
运营
3
管理
1
标签云
算法
C程序设计语言
C语言
Java
mysql
PHP
ffmpeg
golang
VueJs
脚手架
VueJs实战项目
Intellij IDEA
Centos7
Hyperf
抖音运营
杰克韦尔奇
跌荡一百年
生成海量测试数据
企业管理
习题2-3
习题2-4
习题2-6
异常分类
File
习题2-7
习题2-8
习题2-9
习题3-3
习题3-4
习题3-5
友情链接
申请
SaaS引擎
机器人框架
京东捡漏