美文网首页
力扣刷题01

力扣刷题01

作者: 苏苏哇哈哈 | 来源:发表于2022-01-19 00:17 被阅读0次

    1.题目

    给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
    你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。

    2.思路

    语言:js
    思路:map对象

    3.实现代码

    /**
    * @param {number[]} nums
     * @param {number} target
     * @return {number[]}
     */
    // 解法1:
    var twoSum = function(nums, target) {
        map = new Map()
        for (let i = 0; i < nums.length; i++) {
            a = target - nums[i]
            if (map.has(a)) {
                return [map.get(a), i]
            }
            map.set(nums[i], i);
            // console.log(map)
        }
    };
    console.log('输出:', twoSum([15, 7, 11, 15], 26))
    
    // 解法2:
    // 时间复杂度: O(N ^ 2)最坏情况下数组中任意两个数都要被匹配一次。
    // 空间复杂度: O(1) O(1)。
    var two = function(nums, target) {
        for (let i = 0; i < nums.length; i++) {
            a = target - nums[i];
            for (let j = i + 1; j < nums.length; j++) {
                if (nums[i] + nums[j] == target) {
                    return [i, j]
                }
            }
        }
    }
    console.log('输出:', two([15, 7, 11, 15], 26))
    
    // forEach
    var third = (nums, target) => {
        let map = new Map();
        let list = [];
        nums.forEach((item, index) => {
            let a = target - item;
            if (map.has(a)) {
                return list = [map.get(a), index]
            }
            map.set(item, index)
        })
        return list;
    }
    console.log('输出:', third([15, 7, 11, 15], 26))
    
    // map
    var four = (nums, target) => {
        let map = new Map();
        let list = []
        nums.map((item, index) => {
            let a = target - item;
            if (map.has(a)) {
                list = [map.get(a), index];
                return false;
            }
            map.set(item, index)
        })
        return list;
    }
    console.log('输出:', four([2, 7, 11, 15], 9))
    
    // for of 可以正确响应break、continue和return语句
    var five = (nums, target) => {
        let map = new Map();
        for (let [i, item] of new Map(nums.map((item, i) => [i, item]))) {
            let a = target - item;
            if (map.has(a)) {
                return [map.get(a), i]
            }
            map.set(item, i)
        }
    }
    console.log('输出:', five([2, 7, 11, 15], 9))
    
    // for of 
    var six = (nums, target) => {
        let map = new Map();
        for (let [i, item] of nums.entries()) {
            let a = target - item;
            if (map.has(a)) {
                return [map.get(a), i]
            }
            map.set(item, i)
        }
    }
    console.log('输出:', six([2, 7, 11, 15], 9))
    
    //for in
    var seven = (nums, target) => {
        let map = new Map();
        for (let i in nums) {
            let a = target - nums[i];
            if (map.has(a)) {
                return [map.get(a), i]
            }
            map.set(nums[i], i)
        }
    }
    console.log('输出:', seven([2, 7, 11, 15], 9))
    

    相关文章

      网友评论

          本文标题:力扣刷题01

          本文链接:https://www.haomeiwen.com/subject/xfnlhrtx.html