先看题
解法
第一种
双循环暴力解图
时间复杂度:O(n²)
空间复杂度:O(1)
const twoSum = function (nums, target) {
for (let i = 0; i < nums.length; i++) {
const needValue = target - nums[i];
for (let j = 1; j < nums.length; j++) {
if (nums[j] === needValue) return [i, j];
}
}
}
第二种
利用map键值对,数组的值存在map的键中,下标存在map的值中
时间复杂度:O(n)
空间复杂度:O(n)
const twoSumByMap = function (nums, target) {
const map = new Map();
for (let i = 0; i < nums.length; i++) {
const needValue = target - nums[i];
if (map.has(needValue)) return [map.get(needValue), i]
map.set(nums[i], i)
}
}