Two Sum

原创 2016年06月01日 21:43:08

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].
题意:给定一个数组,求解数组中的两个值相加等于target。且数组中的这两个值对唯一。
JS代码1:

var twoSum = function(nums, target) {
    var num2=0;
    var res=[];
    var index;
    if(nums.length<2)
    {
        return res;
    }
    for(var i=0,len=nums.length;i<len;i++)
    {

        num2=target-nums[i];
        index=nums.indexOf(num2,i+1);
        if(index!==-1)
        {
            res[0]=i;
            res[1]=index;
             return res;
        }
    }
    return res;
};

思路:依次遍历数组中每个元素,分别求出target-nums[i]的值,利用JS中的indexOf(nums[i],i+1)函数从i+1的位置开始索引target-nums[i],找到返回下标值。时间复杂度为0(n*m).空间复杂度为0(1)。
JS代码2:

var twoSum = function(nums, target) {
    var numsSort=nums.slice(0);
    var num2=0;
    var res=[];
    var index;
    var i=0,j=nums.length-1;
    if(nums.length<2)
    {
        return res;
    }
    var sortNums=function(a,b){
        return a-b;
    };
    nums.sort(sortNums);//升序排列nums
    while((nums[i]+nums[j]!==target)&&(i<j))
    {
        if(nums[i]+nums[j]>target)
        {
            j--;
        }
        if(nums[i]+nums[j]<target)
        {
            i++;
        }
    }
    if((nums[i]+nums[j])===target)
    {
     res[0] =numsSort.indexOf(nums[i]);
     res[1] =numsSort.lastIndexOf(nums[j]);
    }

    return res;
};

思路:现将nums数组排序,然后从前后两端线性查找nums[i]+nums[j])===target的两个元素。此题注意事项如下:
1.数组最后一个元素是nums[nums.length-1];
2.深拷贝是复制,例如: var numsSort=nums.slice(0);
浅拷贝是引用,例如:var numsSort=nums;
这个千万不能错哟!!!!!!!!!!!!

版权声明:本文为博主原创文章,未经博主允许不得转载。

LeetCode::Two Sum C语言

题目 Given an array of integers, find two numbers such that they add up to a specific target number. ...
  • u013300875
  • u013300875
  • 2015年03月07日 15:39
  • 5560

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

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

算法系列--Two Sum

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

Two Sum -- LeetCode

原题链接: http://oj.leetcode.com/problems/two-sum/ 这是一道非常经典的题目,brute force时间复杂度为O(n^2), 对每一对pair两两比较。 优...
  • linhuanmars
  • linhuanmars
  • 2014年02月22日 23:11
  • 20533

leetcode 170: Two Sum III - Data structure design

Two Sum III - Data structure design Total Accepted: 311 Total Submissions: 1345 Design and implem...
  • xudli
  • xudli
  • 2014年12月31日 08:17
  • 6998

[LeetCode]1 Two Sum(C++,Python实现)

LeetCode OJ的第一题,题目描述如下:
  • Shiroh_ms08
  • Shiroh_ms08
  • 2014年05月16日 21:17
  • 1886

leetcode 1. Two Sum -----java

题目链接:https://leetcode.com/problems/two-sum/ 题目: Given an array of integers, return indices of th...
  • j754379117
  • j754379117
  • 2016年06月20日 19:52
  • 1416

[leetcode] 371. Sum of Two Integers 解题报告

题目链接: https://leetcode.com/problems/sum-of-two-integers/ Calculate the sum of two integers a and b...
  • qq508618087
  • qq508618087
  • 2016年06月30日 13:23
  • 7986

LeetCode || Two Sum

Two Sum  Total Accepted: 16363 Total Submissions: 87273My Submissions Given an array of ...
  • jiadebin890724
  • jiadebin890724
  • 2014年04月09日 23:11
  • 33884

[LeetCode][1]Two Sum解析 -Java实现

Q: Given an array of integers, return indices of the two numbers such that they add up to a spe...
  • u014629433
  • u014629433
  • 2016年06月01日 16:23
  • 835
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Two Sum
举报原因:
原因补充:

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