给定一个整数数组,找到两个数字,使它们加起来成为一个特定的目标数字。
函数twoSum应该返回两个数字的索引,使得它们加起来达到目标,其中index1<index2.请注意,您返回的答案(index1和index2(不是零。把这两个数字按顺序放在一个数组中,然后从函数中返回数组(查看函数签名会让事情变得更清楚(。请注意,如果不存在对,则返回空列表。
如果存在多个解决方案,则输出index2最小的解决方案。如果有多个具有最小index2的解决方案,请从中选择具有最小index1的解决方案。
twoSum : function(A, B){
var tempA = A;
var index1 = [];
var index2 = [];
var Results = [];
var diff = A.length/2;
for(var i = 0; i < A.length - 1; i++){
var temp = B - A[i];
for(var j = i; j < A.length - 1; j++){
if(temp == A[j]){
if(j - i > 0){
if(j < Results[1] || Results.length == 0){
if(A[j] != A[Results[1]-1] && A[i] != A[Results[0]-1]){
Results[0] = i + 1;
Results[1] = j + 1;
}
}
}
}
}
}
return Results;
}
您可以对一个对象采用单循环方法来存储丢失的值。
function find(array, sum) {
var hash = {},
i = 0;
while (i < array.length) {
const value = array[i++];
if (value in hash) return [hash[value], i];
if (!(sum - value in hash)) hash[sum - value] = i;
}
}
console.log(find([2, 4, 2, 3, 7, 6, 5, 3, 4], 8));