码迷,mamicode.com
首页 > 编程语言 > 详细

【Leetcode】【简单】【1. 两数之和】【JavaScript】

时间:2019-09-10 00:26:03      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:定义   art   整数   头部   联系   给定一个整数数组   描述   def   func   

题目描述

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】

标签:定义   art   整数   头部   联系   给定一个整数数组   描述   def   func   

原文地址:https://www.cnblogs.com/2463901520-sunda/p/11495081.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!