Js算法:计算两数之和

摘要:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和

题目描述:

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 

 

示例

给定 nums = [2,4,5,6], target = 9
因为 nums[1] + nums[2] = 4 + 5 = 9
所以返回 [1, 2]


方法一:暴力法
遍历每个元素item,查找是否存在一个值与target-item,相等的元素

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

时间复杂度:O(n2)

方法二:一次循环
遍历每个元素item,查找是否存在一个值与target-item,相等的元素

var twoSum = function(nums, target) {
    for(let i=0;i<nums.length;i++){
        let temp=target-nums[i];
        let index = nums.indexOf(temp,i+1);
        if (index != -1) {
            return [i, index]
        }
    }
};

时间复杂度:O(n)

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_4431