题目描述
1.暴力解法
计算每个数字的差值,然后用indexof找差值的下标,找到了就返回
JavaScript中的indexOf方法是用于查找数组中指定元素的位置的方法。如果数组中包含该元素,则返回该元素的索引;如果数组中不包含该元素,则返回-1。
该方法的语法如下:
array.indexOf(searchElement[, fromIndex])
其中,array表示要进行搜索的数组;searchElement表示要查找的元素;fromIndex是一个可选参数,表示从数组的哪个索引开始查找。如果省略该参数,则默认从数组的第一个元素开始查找。
var twoSum = function(nums, target)
{
for(let index=0;index<nums.length;index++)
{
let diff=target-nums[index];
let diffindex=nums.indexOf(diff);
if(diffindex!==-1&&diffindex!==index)
//避免出现找不到下标或者找到的数字下标相同的情况
{
return [diffindex,index];
}
}
return [];
};
时间复杂度:O(N^2) 因为indexof也算一层循环
空间复杂度:O(1)
2.使用hashmap
也是对每次数据与target的差值进行处理,在map中寻找,找到了就返回,找不到就set进map里。
var twoSum = function(nums, target)
{
const map=new Map();
for(let index=0;index<nums.length;index++)
{
const diff=target-nums[index];
if(map.has(diff))
//如果map有这个差值,就直接返回
{
return [map.get(diff),index];
}
else
//如果没有,就set进去
{
map.set(nums[index],index);
}
}
return [];
};
时间复杂度:O(N)
空间复杂度:O(N) 多使用了一个map来存储