Two Sum

原创 2015年07月09日 19:32:37
题目:Given an array of integers, find two numbers such that they add up to a specific target number.

The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2.

Please note that your returned answers (both index1 and index2) are not zero-based.

You may assume that each input would have exactly one solution.

Input: numbers={2, 7, 11, 15}, target=9

Output: index1=1, index2=2



如果使用暴力搜索,时间复杂度为O(n*n)

public class Solution {
    public int[] twoSum(int[] nums, int target) {
        int[] temp=new int[2];
        for(int i=0;i<nums.length;i++){
            for(int j=i+1;j<nums.length;j++){
                if(nums[i]+nums[j]==target){
                    temp[0]=i+1;
                    temp[1]=j+1;
                }
            }
        }
        return temp;
    }
}

解法:利用HashMap,存储数组中的值和Index,使用get方法,get到target-nums[i],

记录当前的index,否则将nums[i] put到HashMap中。时间复杂度只有O(n)。

public class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> map = new HashMap<Integer, Integer>(); //记录值和index
        int[] ret = new int[2]; //辅助数组
        for(int i=0; i<nums.length; i++){  
            if(map.get(target-nums[i]) != null){  //找到值对应的index
                ret[0] = map.get(target-nums[i]) + 1;  
                ret[1] = i+1;  
            }else 
                map.put(nums[i], i);//没有找到则记录
        }  
        return ret;  
    }
}


leetcode 刷题题解(c++) 1.Two Sum (hash表,排序+二分查找)

c++刷leetcode,有题目和算法代码,可直接在leetcode提交通过。
  • GOGO_YAO
  • GOGO_YAO
  • 2016年07月24日 20:59
  • 542

leetcode--TWO SUM延伸(假设答案不唯一、假设输入有相同数字)

leetcode中的TWO SUM对结果进行了限制,You may assume that each input would have exactly one solution. 但是考虑实际情况,...
  • u010523205
  • u010523205
  • 2015年07月14日 21:29
  • 408

LeetCode题解--1. Two Sum(和为S的两个数字)

题目地址https://leetcode.com/problems/two-sum/ 描述给定一个整数数组,找出其中两个数满足相加等于你指定的目标数字。要求:这个函数twoSum必须要返回能够相加等于...
  • gatieme
  • gatieme
  • 2016年01月27日 22:32
  • 3874

算法系列--Two Sum

继续算法系列。今天再看一道leetcode(www.leetcode.com)的题目。问题描述原文 Given an array of integers, find two numbers suc...
  • ylyg050518
  • ylyg050518
  • 2015年09月13日 23:34
  • 832

LintCode双指针/滑动窗口/Two Sum类型题总结

双指针题算是数组类型题目的一个子模块了。 373. Partition Array by Odd and Even 把一个数组划分为奇数在前偶数在后的状态,要求in place。很简单,就用双指针法,...
  • luoshengkim
  • luoshengkim
  • 2016年08月10日 19:33
  • 954

Two Sum(初谈双指针)

昨天晚上遇到这么一个题目,然后听到了关于“双指针”的使用。好了,言归正传,先来看一看这个题目:Given an array of integers, return indices of the two...
  • lai_li
  • lai_li
  • 2016年04月10日 12:59
  • 822

【LeetCode编程学习(C语言)】1.Two Sum

LeetCode编程之简单篇,两个数求和,采用穷举和hash对比
  • yake827
  • yake827
  • 2016年03月28日 13:39
  • 4273

1. Two Sum(重要!)

Given an array of integers, return indices of the two numbers such that they add up to a specific ta...
  • gao1440156051
  • gao1440156051
  • 2016年07月09日 16:21
  • 930

leetcode解题笔记:Two sum系列解题思路

Two Sum 3Sum 3Sum Closest Two SumGiven an array of integers, return indices of the two numbers such ...
  • crystal6918
  • crystal6918
  • 2017年03月27日 15:06
  • 522

[C++]LeetCode 1: Two Sum(无序数组求指定和)

Problem: Given an array of integers, find two numbers such that they add up to a specific target num...
  • emmaalways
  • emmaalways
  • 2015年04月28日 20:16
  • 657
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Two Sum
举报原因:
原因补充:

(最多只允许输入30个字)