LeetCode | 在数组中找到相加为规定值的两个数,返*湎卤

发布于:2021-10-27 07:53:32

题目来源:leetcode-cn.com


给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。


你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。


示例:


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

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

?


答:


这里我使用的是时间复杂度为O(N)的方法,从数组的头和尾相加判断,比给出数小,头部指针向后移动


(用这个方法返回值是不对的,因为它排序后返回的就是新的下标了)


代码如下:


var twoSum = function(nums, target) {
var i,j
n=nums.length;
var sortNum = (a,b) => a-b;
var numArr = nums.sort(sortNum)
for(i=0,j=n-1;i if(nums[i]+nums[j]==target){
return {i,j}
}else if(nums[i]+nums[j] i++
}else {
j--
}
}
};

方法二:



const twoSum = (nums, target) => {
let mapObj = {};
let res = [];
nums.forEach((e, i) => {mapObj[e] = i});
for(let i=0;i let j = mapObj[target - nums[i]];
if(j && j !== i) {
res = [i, j];
break;
}
}

return res;
};

这个使用了另一种思路,将值存入新数组的下标再进行判断

相关推荐

最新更新

猜你喜欢