给定一个已经 按升序排列 的数组,找到两个数使他们加起来的和等于特定数。
函数应该返回这两个数的下标,index1必须小于index2。注意返回的值不是 0-based。
相向双指针
public class Solution {
/**
* @param nums: an array of Integer
* @param target: target = nums[index1] + nums[index2]
* @return: [index1 + 1, index2 + 1] (index1 < index2)
*/
public int[] twoSum(int[] nums, int target) {
int[] indexs = new int[2];
int n = nums.length;
if(n < 2 || nums == null)
return indexs;
int left = 0, right = n - 1;
while(left < right){
if(nums[left] + nums[right] > target){
right--;
}
else if(nums[left] + nums[right] < target){
left++;
}
else{
indexs[0] = left + 1;
indexs[1] = right + 1;
return indexs;
}
}
return indexs;
}
}