Leetcode简单1. 两数之和JavaScript

Posted 2463901520-sunda

tags:

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

题目描述

1. 两数之和

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

解答:

解答1:

个人思路:

定义两个指针,一个指向顶部,一个指向尾部,尾部不断向头部前进,指针重叠时,头部指针加1,尾部指针回到尾部,继续。

直到所指两个元素加起来等于target为止。

216 ms

/**
 * @param number[] nums
 * @param number target
 * @return number[]
 */
var twoSum = function(nums, target) 
    let start = 0;
    let end = nums.length-1
    while(start <= end)
        if(start === nums.length-1)
            break
        
        if(start === end)
           start++
            end = nums.length-1
           
        if(nums[start]+nums[end] === target)
           return[start,end]
        
        end--
    
;

 

 

解答2:

已有的最快的解答:

还是hash表运行快,定义一个空对象,遍历数组,如果target减去当前元素得到的值,已经是对象的key了,就输出 [对象的key对应的value(索引),当前元素索引];

如果得到的值不是对象的key,就把这个 元素 作为对象的key,元素索引作为对应的value。

44ms

var twoSum = function (nums, target) 
  let obj = ;
  for (var i = 0; i < nums.length; i++) 
    if (obj[target - nums[i]] !== undefined) 
      return [obj[target - nums[i]], i];
    
    obj[nums[i]] = i;
  
;

 

以上是关于Leetcode简单1. 两数之和JavaScript的主要内容,如果未能解决你的问题,请参考以下文章

每日算法/刷穿 LeetCode1. 两数之和(简单)

⭐算法入门⭐《二分枚举》简单05 —— LeetCode 1. 两数之和

leetcode中的两数之和(第一题:简单)

LeetCode刷题167-简单-两数之和

leetcode1. 两数之和

python刷LeetCode:1.两数之和