LeeCode前端算法基础100题-两数之和

Posted 尔嵘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeeCode前端算法基础100题-两数之和相关的知识,希望对你有一定的参考价值。

一、问题详情:

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以想出一个时间复杂度小于 O(n2) 的算法吗?

二、我的答案:

/**
 * @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; //得到下标数组
            }
        }
    }
};

三、参考答案:

/** 
 * 哈希解法
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
    let hash = []
    for (let i = 0; i < nums.length; i++) {
        if (hash[nums[i]] != null) { // 当前元素在hash中, 直接返回结果
            return [hash[nums[i]], i]
        } else {
            hash[target - nums[i]] = i // 保存当前元素期待的值和当前索引到hash
        }
    }
    return []
};

四、总结建议:

要综合考虑算法的时间复杂度! 时间复杂度:T(n) = O(f(n)) 空间复杂度:S(n) = O(f(n)

以上是关于LeeCode前端算法基础100题-两数之和的主要内容,如果未能解决你的问题,请参考以下文章

Leecode01. 两数之和——Leecode大厂热题100道系列

Leecode01. 两数之和——Leecode大厂热题100道系列

Go-Leecode-两数之和(刷题记录)

Leecode大厂热题100道系列题解

Leecode大厂热题100道系列题解

leecode刷题-- 两数之和