题意:要求在排好序的数组中找出两个数之和等于目标值。返回这个两个数在数组中序号值。
解题思路:首先,我们看到该数组已经排序完成,并要求得到某特定和值。立马反应是使用双指针的方法。设定一个指针在前,一个指针在后,若两指针指向的值大于目标值,就让后面的指针前移;否则前面的指针后移。
代码如下:
class Solution {
public int[] twoSum(int[] numbers, int target) {
int left=0;
int right=numbers.length-1;
int a[]=new int[2];
while(numbers[left]+numbers[right]!=target&&right!=left){
if(numbers[left]+numbers[right]>target){
right--;
}
else{
left++;
}
}
if(right==left){
return a;
}
else{
a[0]=left+1;
a[1]=right+1;
return a;
}
}
}