前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[不定时一题]Leetcode两数之和

[不定时一题]Leetcode两数之和

作者头像
小丑同学
发布2020-09-20 20:04:47
2430
发布2020-09-20 20:04:47
举报
文章被收录于专栏:小丑的小屋

Leetcode第一天

今天又是神奇的一天,今天是小编默默的打开了Leetcode题库的第一天,初生牛犊不怕虎,开足马力就是干。

最开始看到简单两个字,还是信息十足。但是读了3遍题目之后,整个人都沙雕了,扪心自问“我这也太菜了吧,读了3遍题目,脑子一片空白"。

接着疯狂读题,疯狂读题,上手就是暴力操作:

代码语言:javascript
复制
/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
    for(var i = 0;i<nums.length;i++){
        for(var j =i+1;j<nums.length;j++){
            if(nums[i]+nums[j]==target){
                return [i,j]
            }
        }
    }
};

然后高兴得点击了执行代码的按钮,发现预期的结果还是正确的,完成了运行时间160ms,内存消耗38MB

我的天呐,这也行,但是越想越不对劲,题目中有一句话数组中同一个元素不能使用两遍,我这个写法存在同一元素使用多次的问题,这就不太开心了,继续发奋图强。

既然同一元素不能使用两遍,那么改变思路,设置一个空的集合,使用目标值减去数组中的值,结果如果存在于集合中那么返回下标,如果不存在放到集合中,因为Set集合会自动去重,所以就不再在同一元素的问题了。

代码语言:javascript
复制
/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
    var num = new Set();
    for(var i = 0;i<nums.length;i++){
      if(num.has(target-nums[i])){
          return [nums.indexOf(target-nums[i]),i]
      }else{
        num.add(nums[i])
      }
    }
};

再次提心吊胆的点击了执行代码的按钮,结果如下:

在运行时间上提升了一半时间80ms,内存消耗毫无变化。

最后

本文结束,有什么问题和有错误的地方,欢迎大家的留言和评论,还有后续更新,下期更加精彩 ”

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小丑的小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Leetcode第一天
  • 最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档