/**
* @Description 对撞指针
* left = 最左边的最小值
* right = 最右边的最大值
* 因为此题目一定有解,且数组有序
*
* 所以如果 left + right = tarfet则直接返回
* 如果 left + right < target 说明此时值小了,只能把左边又移
* 如果 left + right > target 说明此时值大了,只能把右边左移
* @Date 2022/1/9 5:58 下午
* @Author wuqichuan@zuoyebang.com
**/
class Solution {
public int[] twoSum(int[] numbers, int target) {
int left = 0;
int right = numbers.length -1;
while (left < right) {
if(numbers[left] + numbers[right] == target){
return new int[]{left+1,right+1};
}else if(numbers[left] + numbers[right] < target){
left++;
}else{
right--;
}
}
return new int[] {-1, -1};
}
}