前端與算法 leetcode 1. 兩數之和

# 前端與算法 leetcode 1. 兩數之和

題目描述

給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和爲目標值的那 兩個 整數,並返回他們的數組下標。前端

你能夠假設每種輸入只會對應一個答案。可是,你不能重複利用這個數組中一樣的元素。java

示例:git

給定 nums = [2, 7, 11, 15], target = 9

由於 nums[0] + nums[1] = 2 + 7 = 9
因此返回 [0, 1]

350. 兩個數組的交集 IIgithub

概要

這道題的意思其實就是找一個target-nums[i]的值,而hashMap在這方面很擅長,複雜度最差也是O1算法

提示

HashMap,暴力法數組

解析

解法一:暴力法

使用兩層循環,外層循環計算當前元素與 targettarget 之間的差值,內層循環尋找該差值,若找到該差值,則返回兩個元素的下.code

解法二:HashMap法

使用一層循環,遍歷數組的同時查找target-nums[i]的值,找到則當即返回target-nums[i]值的下標和i的下標ip

算法

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
    // 暴力法
    // for(let i = 0;i<nums.length;i++){
    //     for(let j = i+1;j<nums.length;j++){
    //         if(nums[i]===target-nums[j]) return [i,j]
    //     }
    // }
    // return []
    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);
    }
};

傳入[1, 2], [11, 1, 2, 3, 2]的運行結果

[ 1, 2 ]

執行結果

執行用時 :68 ms, 在全部 javascript 提交中擊敗了90.45%的用戶
內存消耗 :34.8 MB, 在全部 javascript 提交中擊敗了33.61%的用戶

GitHub倉庫

1. 兩數之和

內存

相關文章
相關標籤/搜索