数据结构与算法每日一题——哈希表(1. 两数之和)

36 阅读1分钟

1. 两数之和

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function (nums, target) {
    // 1.暴力破解 利用循环中的indexOf 查找下标来判断
    // for (let i = 0; i < nums.length; i++) {
    //     let surplus = target - nums[i]
    //     let index = nums.indexOf(surplus)
    //     if (index != -1 && index != i) {
    //         return [i, index]
    //     }
    // }
    // return []
    //利用map
    // 先循环 如果map有target-nums[i]的值,则返回下标数组; 否则将循环中的值加入到map中
    let maps = new Map()
    for (let i in nums) {
        num = target - nums[i]
        if (maps.has(num)) {
            return [maps.get(num), i]
        }
        maps.set(nums[i], i)
    }
};