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道系列