Q:given an array of integers that's already sorted in ascending order, find, numbers such, they add up t o a specific target number.
The function twosum should return indices of the numbers such that they add up to the target, where index1 must is Les S than Index2. Please note that your returned answers (both Index1 and INDEX2) is not zero-based.
You may assume this each input would has exactly one solution.
Input:numbers={2, 7, one, A, target=9
Output:index1=1, index2=2
Both Sum ii-input array is sorted
public class solution2{
O (n) runtime, O (n) space;
We have both pointers, start and end,
Firstly, we add start and end, because the array is sorted in ascending order,
If the sum is smaller than our target, we just increase the start point;
If the sum is greater than our target, we just decrease the end point,
Keep doing this, until the sum was equal to our target.
Public int[] Twosum (int[] numbers, int target) {
int i = 0, j = numbers.length-1;
while (I < j) {
if (Numbers[i] + numbers[j] < target) {
i++;
} else if (Numbers[i] + numbers[j] > target) {
j--;
} else {
return new int[] {i+1, j+1};
}
}
throw new IllegalArgumentException ("No, Sum solution");
}
}
Double Sum Ii-input Array is sorted (leetcode167)-Solution2