打卡第二十三天:两数之和

文章讨论了两种解决两数之和问题的方法。第一种是暴力解法,通过遍历数组并使用indexOf查找目标差值,但效率较低,时间复杂度为O(N^2)。第二种是利用哈希表,将元素及其索引入库,查找目标差值时能立即返回,时间复杂度降低到O(N),空间复杂度也为O(N)。因此,哈希表的方法更优。
摘要由CSDN通过智能技术生成

题目描述

在这里插入图片描述

1.暴力解法

计算每个数字的差值,然后用indexof找差值的下标,找到了就返回

JavaScript中的indexOf方法是用于查找数组中指定元素的位置的方法。如果数组中包含该元素,则返回该元素的索引;如果数组中不包含该元素,则返回-1。

该方法的语法如下:
array.indexOf(searchElement[, fromIndex])

其中,array表示要进行搜索的数组;searchElement表示要查找的元素;fromIndex是一个可选参数,表示从数组的哪个索引开始查找。如果省略该参数,则默认从数组的第一个元素开始查找。

var twoSum = function(nums, target)
{
   for(let index=0;index<nums.length;index++)
   {
       let diff=target-nums[index];
       let diffindex=nums.indexOf(diff);
       if(diffindex!==-1&&diffindex!==index)
       //避免出现找不到下标或者找到的数字下标相同的情况
       {
           return [diffindex,index];
       }
   }
   return [];

};

时间复杂度:O(N^2) 因为indexof也算一层循环
空间复杂度:O(1)

2.使用hashmap

也是对每次数据与target的差值进行处理,在map中寻找,找到了就返回,找不到就set进map里。

var twoSum = function(nums, target)
{
   const map=new Map();
   for(let index=0;index<nums.length;index++)
   {
       const diff=target-nums[index];
       if(map.has(diff))
       //如果map有这个差值,就直接返回
       {
          return [map.get(diff),index];
       }
       else
       //如果没有,就set进去
       {
          map.set(nums[index],index);
       }
   } 
   return [];

};

时间复杂度:O(N)
空间复杂度:O(N) 多使用了一个map来存储

总结:

还是用hashmap更快。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值