-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
44 lines (41 loc) · 801 Bytes
/
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/**
* @param {number[]} numbers
* @param {number} target
* @return {number[]}
*/
/**
* 二分搜索
*/
function binarySearch(nums,l,r,target){
//判断不合法情况
if(l<0 || l>nums.length){
throw "l is out of bound";
}
if(r<0 || r>nums.length){
throw "r is out of bound";
}
//二分搜索
while(l<=r){
let mid = Math.floor(l + (r-l)/2);
if(nums[mid] === target){
return mid;
}
if(target > nums[mid]){
l = mid+1;
}else{
r = mid-1;
}
}
return -1;
}
var twoSum = function(numbers, target) {
var res = [];
for(let i=0;i<numbers.length-1;i++){
let j = binarySearch(numbers,i+1,numbers.length-1,target-numbers[i]);
if(j!=-1){
res = [i+1,j+1];
return res;
}
}
throw "The input has no solution"
};