[LeetCode]Two Sum
2014-11-12 07:15
441 查看
<span style="font-family:SimSun;">如雷贯耳的Two Sum,光听隔壁哥们店面别人就面了两遍,真到自己写的时候还是没能一遍通过,事非经过不知难!算法思想很简单,用一个HashMap把数字出现的位置记下来,但自己第一遍提交时忘了考虑同一个数等于target的一半的情况,比如target是6,numbers是{3, 2, 4},我返回了1,1, 这是不对的。 Accepted 答案如下,红色部分为忘了check的条件</span>
import java.util.Map;import java.util.HashMap;public class Solution {public int[] twoSum(int[] numbers, int target) {Map<Integer, Integer> hash = new HashMap<Integer, Integer>();for (int i = 0; i < numbers.length; i++){hash.put(target - numbers[i], i + 1);}for (int i = 0; i < numbers.length; i++){if (hash.get(numbers[i]) != null && hash.get(numbers[i]) != i + 1){
return new int[]{i +1, hash.get(numbers[i])};
}}return new int[]{-1, -1};}}但是这个答案循环了两遍,其实官方给的答案可以一个循环搞定:
<pre name="code" class="java">public static int[] twoSum(int[] numbers, int target){Map<Integer, Integer> hash = new HashMap<Integer, Integer>();for (int i = 0; i < numbers.length; i++){int x = numbers[i];if (hash.containsKey(target - x)){return new int[]{hash.get(target -x) + 1, i + 1};}hash.put(x, i);}return new int[]{-1, -1};}不管怎样,第一题正式开始了!
相关文章推荐
- leetcode(1)Two Sum
- Two Sum 分类: Leetcode(线性表) 2015-02-04 10:05 57人阅读 评论(0) 收藏
- Leetcode:1. Two Sum
- [Leetcode]1. Two Sum
- [Leetcode] Two Sum
- [LeetCode] Two Sum 两数之和
- LeetCode --- 1.Two Sum
- leetcode 1 Two Sum
- LeetCode题解-1-Two Sum
- 【LeetCode】1. Two Sum
- leetcode第一题--two sum
- [LeetCode]Two Sum
- leetcode---Two Sum
- LeetCode---1. Two Sum
- [leetcode] 1. Two Sum
- [LeetCode 解题报告]001.Two Sum
- leetcode.-1.Two Sum
- Leetcode1:Two Sum
- leetcode--Two Sum--无序关联容器--hash map
- LeetCode题目:1. Two Sum