定义一个对象,以数组的每个值为key。
遍历数组,对于每个元素x,找target-x在不在对象中,
若在,就找到了;
若不在,就把x存到对象中。
时间空间都是O(n)的。
var twoSum = function(nums, target) {
var mapObj = {};
for(var i = 0; i < nums.length; i++) {
if(mapObj[target - nums[i]] != undefined) {
return [i, mapObj[target - nums[i]]]
} else {
mapObj[nums[i]] = i;
}
}
return [];
};
本文介绍了一种解决两数之和问题的高效算法。通过定义一个对象存储数组中的值作为key,遍历数组查找目标值减去当前值是否存在于对象中。若存在则返回下标,否则存储当前值及其下标。此算法时间复杂度和空间复杂度均为O(n)。
282

被折叠的 条评论
为什么被折叠?



