两数之和 js

解法一:

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */

var twoSum = function (nums, target) {
  let hash = {}; //创建一个对象保存,key保存数组元素,value为该元素的数组下标
  for (let i = 0; i < nums.length; i++) {
    if (hash[target - nums[i]] !== undefined) {
      return [hash[target - nums[i]],i];
    }
    hash[nums[i]] = i;  
  }
  return [];
};

执行用时:60 ms 执行速度快
内存消耗:41.4 MB 内存消耗算小

解法二:

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
  for(let i = 0 ; i < nums.length; i++){
    if(nums.indexOf(target - nums[i] , i+1) != -1){ //这里用includes 会再慢一点点
        return [i,nums.indexOf(target - nums[i],i+1)]
    }
  }
};

执行用时:104 ms 执行速度慢
内存消耗:41.2 MB 内存消耗更小

解法三:

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */

var twoSum = function(nums, target) {
     let arr = []
  for(let i = 0 ; i < nums.length; i++){
      for(let j = i + 1 ; j < nums.length ; j++){
          if(nums[i] + nums [j] == target){
              arr.push(i);
              arr.push(j);
              return arr
          }
      }
  }
};

执行用时: 96 ms 不快不慢
内存消耗: 41.5 MB 消耗很多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值