LeetCode 1. Two Sum(数组中和为某数的两个整数的角标数组)

原创 2018年04月17日 19:49:31

题目地址:https://leetcode.com/problems/two-sum/description/


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, and you may not use the same element twice.

Example:

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].


核心思想:

 利用hashmap在遍历一次的情况下,先存储数组中数字和角标的对应关系和判断是否含有target-this。


   /**
     * 整形数组,找出和为某数的两个数字
     * @param nums  整型数组
     * @param target 目标数字
     * @return 满足和为target的两个整数
     */
    public int[] twoSum2(int[] nums, int target) {
        Map<Integer,Integer> tmpMap = new HashMap<>(nums.length);
        //遍历并记录到Map中
        for (int i = 0; i < nums.length; i++) {
           int complement = target - nums[i];
            if (tmpMap.containsKey(complement)&&tmpMap.get(complement)!=i){
                return new int[]{i,tmpMap.get(complement)};
            }
            tmpMap.put(nums[i],i);
        }
        throw new IllegalArgumentException("No two sum solution");
    }
    /**
     * 整形数组,找出和为某数的两个数字
     * @param nums  整型数组
     * @param target 目标数字
     * @return 满足和为target的两个整数
     */
    public int[] twoSum(int[] nums, int target) {
        Map<Integer,Integer> tmpMap = new HashMap<>(nums.length);
        //遍历并记录到Map中
        for (int i = 0; i < nums.length; i++) {
            tmpMap.put(nums[i],i);
        }
        //遍历一次直接匹配
        for (int i = 0; i < nums.length; i++) {
            if (tmpMap.containsKey(target - nums[i])&&tmpMap.get(target - nums[i])!=i){
                return new int[]{i,tmpMap.get(target - nums[i])};
            }
        }
        throw new IllegalArgumentException("No two sum solution");
    }


LeetCode 1 — Two Sum(C++ Java Python)

题目: Given an array of integers, find two numbers such that they add up to a specific target number. ...
  • dragon_dream
  • dragon_dream
  • 2014-02-16 22:23:19
  • 15538

LEETCODE 1.Two Sum (python实现)

twosum
  • hexiaodouaipiqiu
  • hexiaodouaipiqiu
  • 2016-05-22 23:25:15
  • 348

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

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

leetcode 1 Two Sum(在无序数组中找两个数之和与目标值相等,两种方法)

Given an array of integers, return indices of the two numbers such that they add up to a specific ta...
  • yang20141109
  • yang20141109
  • 2016-05-28 09:26:51
  • 1044

【LeetCode-面试算法经典-Java实现】【001-Two Sum(求两个数的和)】

给定一个整数数组,找出其中两个数满足相加等于你指定的目标数字。要求:这个函数twoSum必须要返回能够相加等于目标数字的两个数的索引,且index1必须要小于index2。请注意一点,你返回的结果(包...
  • DERRANTCM
  • DERRANTCM
  • 2015-07-16 06:39:39
  • 9946

javascript实现leetcode之two sum

Given an array of integers, return indices of the two numbers such that they add up to a specific ta...
  • xmloveth
  • xmloveth
  • 2017-02-15 01:03:30
  • 821

数字和为sum的方法数 滴滴笔试题

给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数。 当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案。 输入描述: 输入为两行: 第一...
  • zhengjihao
  • zhengjihao
  • 2017-09-10 13:09:46
  • 223

算法题:求指定数组中和为N的出现的所有组合(二)

#include #include using namespace std;void deal_sum(int a[],int n,int val) { int count = 1; ...
  • liuhuiyan_2014
  • liuhuiyan_2014
  • 2015-08-31 13:21:39
  • 1978

算法题:求一个数组中和为sum的所有组合

#include #include using namespace std; void Get_Sum(int sum,int n,int a[],list& lst) { if(sum
  • liuhuiyan_2014
  • liuhuiyan_2014
  • 2015-08-31 00:14:53
  • 2079
收藏助手
不良信息举报
您举报文章:LeetCode 1. Two Sum(数组中和为某数的两个整数的角标数组)
举报原因:
原因补充:

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