两数之和
2020-06-09 本文已影响0人
Mark_大东
两数之和
难度:简单
第一种方法
这个方法是最容易想到的,在不考虑时间复杂度的情况下,双重循环遍历,时间复杂度为O(n^2)。
var twoSum = function(nums, target) {
for (let i = 0 ; i < nums.length ; i ++){
let next = target - nums[i]
for (let j = i + 1 ; j < nums.length ; j ++){
if (nums[j] == next){
return [i,j]
}
}
}
};
第二种方法:
利用map存储键值,达到时间换空间的目的
var twoSum = function(nums, target) {
let map = new Map()
for (let i = 0 ; i < nums.length ; i ++){
let next = target - nums[i]
if (map.has(next)){
return [map.get(next),i]
}
map.set(nums[i],i)
}
};
第三种方法:
使用对象的存储键值
//使用while遍历
var twoSum = function(nums, target) {
let map = {}
let length = 0
while(length < nums.length){
let next = target - nums[length]
if (map[next] != undefined){
return [map[next],length]
}
map[nums[length]] = length
length ++
}
};
//使用for遍历
var twoSum = function(nums, target) {
let map = {}
for (let i = 0 ; i < nums.length ; i ++){
let next = target - nums[i]
if (map[next] != undefined){
return [map[next],i]
}
map[nums[i]] = i
}
};