Anjan Dutta

Leet Code 167: Two Sum II - Input Array Is Sorted

Leet Code 167: Two Sum II - Input Array Is Sorted

Problem statement:

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, index1 and index2, 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.

Constraints:

  • 2 <= numbers.length <= 3 * 104
  • -1000 <= numbers[i] <= 1000
  • numbers is sorted in non-decreasing order.
  • -1000 <= target <= 1000
  • The tests are generated such that there is exactly one solution.

Solution:

/**
* @param {number[]} numbers
* @param {number} target
* @return {number[]}
*/
var twoSum = function(numbers, target) {
let l = 0;
let r = numbers.length-1;
while(l<r) {
if(numbers[l]+numbers[r]===target) {
return [l+1, r+1];
} else if(numbers[l]+numbers[r]>target) {
r--;
} else {
l++;
}
}
return [];
};