Hello everyone!
Today I want to explain one of the most useful techniques in competitive programming — Two Pointers * What is Two Pointers?
Two pointers is a technique where we use two indices to iterate over an array or string.
Usually:
- One pointer starts from the beginning
- Another from the end (or also from beginning)
Example Problem
Given an array, find if there exist two numbers whose sum equals k.
- Idea
Sort the array
Set:
left = 0 right = n — 1
While left < right:
if a[left] + a[right] == k → FOUND if sum < k → left++ if sum > k → right--
- Code (C++)
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, k;
cin >> n >> k;
vector<int> a(n);
for(int i = 0; i < n; i++) cin >> a[i];
sort(a.begin(), a.end());
int l = 0, r = n — 1;
while(l < r) {
int sum = a[l] + a[r];
if(sum == k) {
cout << "YES\n";
return 0;
}
else if(sum < k) l++;
else r--;
}
cout << "NO\n";
}
- Complexity
Sorting: O(n log n) Two pointers: O(n)
Total: O(n log n)
- When to Use?
1) Sorted arrays 2)Pair problems 3)Subarray problems
*Final Tip
If you see:
1) “find pair” 2) “sum equals k” 3) “continuous segment” Think about Two Pointers
Thanks for reading! If this helped you, please upvote








DOWNVOTED
Great explanation! Waiting for new topics from you!