重刷leetcode-day2-[1. 两数之和]

84 阅读1分钟

【题目考察】:哈希法、数组

【目标复杂度】:O(n)

【解法】:

解法1: 双循环遍历数组,找nums[i] + nums[j] === target

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

空间复杂度: O(1)O(1)

解法2: 哈希法,数组

使用es6的Map结构实现哈希表。

【代码】:

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
    const map = new Map();

    for (let i = 0; i < nums.length; i++) {
        if (map.has(target - nums[i])) {
            return [map.get(target - nums[i]), i]
        }
        map.set(nums[i], i);
    }
    return []
};