Two Sum II - Input array is sorted
Question:
Given an array of integers that is already sorted in ascending order, find two numbers such that they add up to a specific target number.
The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2.
Note:Example:
Input: numbers = [2,7,11,15], target = 9
Output: [1,2]
Explanation: The sum of 2 and 7 is 9. Therefore index1 = 1, index2 = 2.
Input: numbers = [2,3,4], target = 6
Output: [1,3]
Input: numbers = [-1,0], target = -1
Output: [1,2]
Source code
Version 1
Idea:
The question is similar with Two Sum, you can use Hash Table to solve it. However, the input is sorted in ascending order, maybe you should try another method.
For saving the memory, you can assume the first element as head, the last element as tail, so those formats will be an output. The illustration is shown at the end.
A easy way to take the sum of head and tail to compare with target.
- If the sum is bigger than target, tail minus 1
- If the sum is smaller than target, head plus 1
Finally, you will find the answer!
(a.) Figure of input=[1,2,3, 5, 8, ..., 23,24] & target=22
Time complexity: O(n)
Space complexity: O(1)
1 | class Solution { |