Loading...
Use two pointers moving towards each other or in the same direction
O(n)O(1)1ALGORITHM: Two Pointer Sum2INPUT: sorted_array[], target_sum3OUTPUT: pair indices or -14 5BEGIN61. left = 072. right = array.length - 183. 94. WHILE left < right DO105. sum = array[left] + array[right]116. IF sum == target_sum THEN127. RETURN (left, right)138. ELSE IF sum < target_sum THEN149. left = left + 11510. ELSE1611. right = right - 11712. END IF1813. END WHILE1914. 2015. RETURN -1 // No pair found21END// Two Pointer Sum in C++
vector<int> twoSum(vector<int>& nums, int target) {
int left = 0, right = nums.size() - 1;
while (left < right) {
int sum = nums[left] + nums[right];
if (sum == target) {
return {left, right};
} else if (sum < target) {
left++;
} else {
right--;
}
}
return {-1, -1}; // Not found
}Ready for searching & sorting algorithms