算法:JavaScript两数之和

Posted wcu1117

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法:JavaScript两数之和相关的知识,希望对你有一定的参考价值。

题目

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].



代码

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
 //[2, 7, 11, 15]  9
 //把差存进数组,如果当前遍历数组有和差相等的值则把当前值的小标和差的下标输出来
 var twoSum = function(nums, target)  {
    let theSet = []
    for(let i = 0; i < nums.length; i++){
       if( theSet.indexOf( nums[i] )  !== -1){   //当前数和数组匹对是否存在
         return [theSet.indexOf( nums[i] ), i];     //如果有则返回当前值再数组中的位置和当前下标
       }else{
        theSet.push(target - nums[i] );//如果数组没有当前值则相减把差存进去数组  9-2=7 i=1 -- 9-7=2 i=2 -- 9-11=-2 i=3 -- 9-15=-6 i=4
       }
    }
   return [0,0];
};
 /*
var twoSum = function(nums, target) {
    var arr = [];
    var num = [];
   
   
    
    /*
    for(var i = 0;i<nums.length;i++){
        for(var j = i+1; i< nums.length; j++){
            if(nums[i] ==  target - nums[j] ){
            arr = [i,j];
            return arr;
            }
        }
        
    }
    ***
};

var twoSum = function(nums, target) {
    const diffs = new Map();
    const j = nums.findIndex((a, i) => diffs.has(target - a) || diffs.set(a, i) && 0);
    return [diffs.get(target - nums[j]), j];
};
*/

  







以上是关于算法:JavaScript两数之和的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript笔试题(js高级代码片段)

算法哈希表 ( 两数之和 )

算法练习之两数之和

《两数之和》之哈希表算法

PHP“两数之和”算法问题

每日一道算法题--两数之和