-
Notifications
You must be signed in to change notification settings - Fork 46
Open
Description
如何从一个数组中快速找出两个数之和等于某一个值的两个数?
穷举法
用for循环的嵌套,穷举,这种方法的时间复杂度为O(n^2),是最差的方法
快排+双指针
function pickNumOfSum(arr,sum){
var i,j;
var n = arr.length;
for(i=0,j=n-1;i<j;){
if(arr[i]+arr[j]===sum){
return [i,j]
}else if(arr[i]+arr[j]<sum){
i++;
}else{
j--;
}
}
return [-1,-1];
}
var a = [10,8,98,3,5,9,8,20];
a = a.sort(function(x,y){
return x-y;
})
pickNumOfSum(a,108)
如果换成是找出三个数之和满足某一条件的值呢?