# 两数之和

image-20200522131146257

一、暴力法

var twoSum = function(nums, target) {
    for(let i=0;i<nums.length-1;i++){
        for(let j=i+1;j<nums.length;j++){
            if(target===nums[i]+nums[j]){return [i,j]}
        }
    }
};
1
2
3
4
5
6
7

二、Hash法存储键值对

function twoSum(nums,target){
  let map = {}
  for(let i= 0;i<nums.length;i++){
    map[target - nums[i]] = i;
  }

  for(let i= 0;i<nums.length;i++){
    if(map[nums[i]]!=undefined){
      if(map[nums[i]]=i) return [i, map[nums[i]]]
    };
  }
}
1
2
3
4
5
6
7
8
9
10
11
12

三 Hash法存储键值对优化版

function twoSum(nums,target){
  let map = []
  for(let i= 0;i<nums.length;i++){
    if (map[nums[i]] != undefined) return [map[nums[i]],i]
    map[target - nums[i]] = i;
  }
}

//经检测数组,对象,Map三种数据类型,所占内存中:数组<对象=Map
1
2
3
4
5
6
7
8
9
更新时间: 5/5/2023, 11:19:52 AM