Two Sum
2016-03-31 01:38
330 查看
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
解法一(暴力破解法:77ms):
两重循环,第一重循环遍历数组,第二重循环从上一重下标的下一个下标开始遍历数组,如果某次两个下标指示的数相加等于目标值,此时返回两重循环的下表即可。
解法二(HashMap:6ms):
遍历过程中不断把之前的数据添加到HashMap中,每一次检查HashMap有没有正好等于Target减去当前值的值,有则返回下标。
You may assume that each input would have exactly one solution.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
解法一(暴力破解法:77ms):
两重循环,第一重循环遍历数组,第二重循环从上一重下标的下一个下标开始遍历数组,如果某次两个下标指示的数相加等于目标值,此时返回两重循环的下表即可。
public class Solution { public int[] twoSum(int[] nums, int target) { int len = nums.length; for(int i = 1;i < len;i++){ for(int j = 0;j < i;j++){ int temp = nums[i]+nums[j]; if(temp == target) return new int[]{j,i}; } } //这里是系统异常,所以不需要throws throw new IllegalArgumentException("No two sum solution"); } }
解法二(HashMap:6ms):
遍历过程中不断把之前的数据添加到HashMap中,每一次检查HashMap有没有正好等于Target减去当前值的值,有则返回下标。
public class Solution { public int[] twoSum(int[] nums, int target){ Map<Integer,Integer> a = new HashMap<Integer,Integer>(); for(int i = 0;i < nums.length;i++){ if(a.containsKey(target-nums[i])) return new int[]{a.get(target-nums[i]),i}; else a.put(nums[i],i); } throw new IllegalArgumentException("No two sum solution"); } }
相关文章推荐
- 导入内容错误
- linux环境变量
- Java并发编程:深入剖析ThreadLocal
- LeetCode Isomorphic Strings
- QT16 delete data from sqlite database with pushbutton
- web pack的使用事项
- CentOS引发的MySQL问题
- BAT MYSQL BACKUP AND ARCHIVE WITH WINRAR
- 在Windows下安装64位压缩包版mysql 5.7.11版本的方法
- mac下修改环境变量
- 软考五:系统开发与运行
- 让BAT静静的执行(隐藏CMD界面)
- Android开发之触摸事件处理机制详解
- 对照Java学习Swift--闭包(Closures)
- VC++ 绘制简单电子元件
- 227. Basic Calculator II
- Qt15 Update a data from Sqlite database with pushbutton
- 流式布局之2012年语法-------------------CSS3盒模型display:flex
- BAT执行PHP文件(区别于上一篇)
- Java字符串详解