def two_sum_sorted(numbers,target):
l,r=0,len(numbers)-1
while l<r:
s=numbers[l]+numbers[r]
if s==target: return [l+1,r+1]
elif s<target: l+=1
else: r-=1
public int[] twoSum(int[] numbers,int target){
int l=0,r=numbers.length-1;
while(l<r){
int s=numbers[l]+numbers[r];
if(s==target) return new int[]{l+1,r+1};
else if(s<target) l++;
else r--;
} return new int[]{};
}
Two-pointer on sorted array. Multi-assign vs two declarations.
def two_sum_sorted(numbers,target):
l,r=0,len(numbers)-1
while l<r:
s=numbers[l]+numbers[r]
if s==target: return [l+1,r+1]
elif s<target: l+=1
else: r-=1
public int[] twoSum(int[] numbers,int target){
int l=0,r=numbers.length-1;
while(l<r){
int s=numbers[l]+numbers[r];
if(s==target) return new int[]{l+1,r+1};
else if(s<target) l++;
else r--;
} return new int[]{};
}
1. Left and right pointers 2. Sum small: move left 3. Sum large: move right