I'm currently tackling the
Two Sum II - Input Array Is Sorted
problem on LeetCode, but I keep running into a Time Limit Exceeded
issue. This indicates that my code isn't as optimized as it could be and may need a more efficient solution. However, optimizing code isn't my strong suit, so I'm specifically looking for guidance on how to eliminate two for-loops
in my current code.
Question:
Two Sum II - Input Array Is Sorted
Given a 1-indexed array of integers numbers that is already sorted in non-decreasing order, you need to find two numbers that 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 designed such that there is exactly one valid solution. You cannot use the same element twice. Your solution must only utilize constant extra space.
Example:
Input: numbers = [2,7,11,15], target = 9
Output: [1,2]
Explanation: The sum of 2 and 7 is 9. Hence, index1 = 1, index2 = 2. The function should return [1, 2].
Link to the question
My current code: Passing test cases 20 / 21
var twoSum = function(numbers, target) {
let arr=[];
for(let i=0; i<numbers.length; i++){
let findNum= target - numbers[i];
for(let j=i+1;j<numbers.length; j++){
if(numbers[j]===findNum)
arr.push(i+1, j+1);
}
}
return arr
};
Any suggestions on how I can optimize my code to pass all test cases?