前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数组-两数之和

数组-两数之和

原创
作者头像
一只眠羊
修改2021-04-01 17:54:38
3520
修改2021-04-01 17:54:38
举报
文章被收录于专栏:前端开发ing前端开发ing

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。

方案一 :双层循环

时间复杂度:O(n^2)

时间复杂度:O(1)

代码语言:txt
复制
function getTwoNums(nums,target){
    let len = nums.length;
    for(let p1 = 0;p1<len;p1++){
        const findNum = target - nums[p1]
        for(let p2 = p1+1;p2<len;p2++){
            if(p2 === findNum){
                return [p2,p1]
            }
        } 
    }
    return null
}

方案二:利用对象

时间复杂度:O(n)

空间复杂度: O(1)

代码语言:txt
复制
function getTwoNums(nums,target){
    let len = nums.length,numsMap = {}
    for(let p = 0;p<len;p++){
        const currentNum = numsMap[nums[p]]
        if(currentNum>=0) return [currentNum,p]
        const other = target - nums[p]
        numsMap[other] = p
    }
}

方案三:利用Map对象

时间复杂度: O(n)

空间复杂度:O(1)

代码语言:txt
复制
    function getTwoNums(nums,target){
        let len = nums.length,numsMap = new Map();
        numsMap.set(nums[0],0)
        for( let p = 1;p<len;p++){
            const other  = target - nums[p]
            if(numsMap.get(other) != undefined) return [numsMap.get(other),p]
            numsMap.set(other,p)
        }
        return null 
    }

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 方案一 :双层循环
  • 方案二:利用对象
  • 方案三:利用Map对象
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档