Two Sum II (Sorted Array)
Given a 1-indexed array of integers `numbers` that is already sorted in non-decreasing order, find two numbers such that they add up to a specific `target` number. Let these two numbers be `numbers[index1]` and `numbers[index2]` where 1 <= index1 < index2 <= numbers.length. Return the indices of the two numbers, added by one as an integer array `[index1, index2]` of length 2. The tests are generated such that there is exactly one solution. You may not use the same element twice. Your solution must use only constant extra space.
Examples
Constraints
2 <= numbers.length <= 3 * 10^4-1000 <= numbers[i] <= 1000numbers is sorted in non-decreasing order.-1000 <= target <= 1000The tests are generated such that there is exactly one solution.
Approach
1. **Intuition**: Since the array is sorted, for every number, we can binary search the rest of the array to find its complement (target - number). 2. **Iterate**: Loop through each element `numbers[i]`. 3. **Calculate Complement**: The number we need to find is `target - numbers[i]`. 4. **Binary Search**: Use binary search on the subarray starting from `i + 1` to the end of the array. If the complement is found, return the indices (1-based). 5. **Completion**: If we finish the loop, we return an empty array (though the problem guarantees exactly one solution).
Complexity Analysis
This approach is slower than O(n) but satisfies the O(1) space constraint.