Skip to content

Commit 4c36605

Browse files
easy binary search two pointers
Medium Topics Companies 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. Your solution must use only constant extra space. Example 1: 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. We return [1, 2]. Example 2: Input: numbers = [2,3,4], target = 6 Output: [1,3] Explanation: The sum of 2 and 4 is 6. Therefore index1 = 1, index2 = 3. We return [1, 3]. Example 3: Input: numbers = [-1,0], target = -1 Output: [1,2] Explanation: The sum of -1 and 0 is -1. Therefore index1 = 1, index2 = 2. We return [1, 2]. 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. Seen this question in a real interview before? 1/5 Yes No Accepted 2.3M Submissions 3.7M Acceptance Rate 62.2% Topics Array Two Pointers Binary Search
1 parent d92090b commit 4c36605

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution {
2+
public int[] twoSum(int[] nums, int target) {
3+
int l=0;
4+
int r=nums.length-1;
5+
while(l<r){
6+
if(nums[l]+nums[r]==target){
7+
return new int[]{l+1,r+1};
8+
}
9+
else if(nums[l]+nums[r]>target){
10+
r--;
11+
}
12+
else{
13+
l++;
14+
}
15+
}
16+
return new int[]{-1,-1};
17+
}
18+
}

0 commit comments

Comments
 (0)