给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。
class Solution {
public int[] twoSum(int[] numbers, int target) {
int left =0;
int right =numbers.length;
while(left<right){
if(numbers[left]+numbers[right-1]<target){
left++;
}
else if(numbers[left]+numbers[right-1]>target){
right--;
}
else{
break;
}
}
int[]num=new int[]{left+1,right};
return num;
}
}
示例代码:
class Solution {
public int[] twoSum(int[] numbers, int target) {
int i = 0, j = numbers.length - 1;
while (i < j) {
int m = (i + j) >>> 1;
if (numbers[i] + numbers[m] > target) {
j = m - 1;
} else if (numbers[m] + numbers[j] < target) {
i = m + 1;
} else if (numbers[i] + numbers[j] > target) {
j--;
} else if (numbers[i] + numbers[j] < target) {
i++;
} else {
return new int[]{i + 1, j + 1};
}
}
return new int[]{0, 0};
}
}