Two Pointers Study Guide
========================
:::warning
[< Return to Home Page](https://hackmd.io/@siansiansu/HknJJm0W0)
:::
Basic Two Pointers
------------------
### Same Direction Pointers
Problems where both pointers move in the same direction.
- 🟩 [26\. Remove Duplicates from Sorted Array](https://leetcode.com/problems/remove-duplicates-from-sorted-array/) \[[Solution](https://hackmd.io/@siansiansu/ryJKpo_4A)\]
- 🟩 [27\. Remove Element](https://leetcode.com/problems/remove-element/) \[[Solution](https://hackmd.io/@siansiansu/r1YtwIuN0)\]
- 🟨 [80\. Remove Duplicates from Sorted Array II](https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii/) \[[Solution](https://hackmd.io/@siansiansu/rJlnQkn_ER)\]
- 🟩 [283\. Move Zeroes](https://leetcode.com/problems/move-zeroes/) \[[Solution](https://hackmd.io/@siansiansu/H1pSnn_zC)\]
- 🟩 [88\. Merge Sorted Array](https://leetcode.com/problems/merge-sorted-array/) \[[Solution](https://hackmd.io/@siansiansu/BJ3TvBdEC)\]
- 🟩 [217\. Contains Duplicate](https://leetcode.com/problems/contains-duplicate/) \[[Solution](https://hackmd.io/@siansiansu/BJnZI0PGA)\]
### Opposite Direction Pointers
Problems where pointers start from opposite ends and move towards each other.
- 🟩 [125\. Valid Palindrome](https://leetcode.com/problems/valid-palindrome/) \[[Solution](https://hackmd.io/@siansiansu/BJbiorDMR)\]
- 🟨 [189\. Rotate Array](https://leetcode.com/problems/rotate-array/) \[[Solution](https://hackmd.io/@siansiansu/HJYTcK4mC)\]
- 🟨 [167\. Two Sum II - Input Array Is Sorted](https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/) \[[Solution](https://hackmd.io/@siansiansu/SkDg1djuC)\]
Advanced Two Pointers
---------------------
### Sliding Window
A variation of the two pointers technique for substring problems.
- ➡️ [Sliding Window Guide](https://hackmd.io/@siansiansu/rkORjyXB0)
### Fast and Slow Pointers
Problems involving detecting cycles or finding middle elements.
- 🟩 [CyclicRotation](https://app.codility.com/programmers/lessons/2-arrays/cyclic_rotation/) \[[Solution](https://hackmd.io/@siansiansu/Sk-Du_rB0)\]
### Multiple Pointers
Problems requiring more than two pointers.
- 🟨 [15\. 3Sum](https://leetcode.com/problems/3sum/) \[[Solution](https://hackmd.io/@siansiansu/S15y8tNQA)\]
- 🟨 [16\. 3Sum Closest](https://leetcode.com/problems/3sum-closest/) \[[Solution](https://hackmd.io/@siansiansu/H1ASwY4mR)\]
### Permutation-based
Problems involving permutations solved using two pointers.
- 🟨 [31\. Next Permutation](https://leetcode.com/problems/next-permutation/) \[[Solution](https://hackmd.io/@siansiansu/B1w0DKN7R)\]
### Water Container Problems
A specific class of problems involving container capacities.
- 🟨 [11\. Container With Most Water](https://leetcode.com/problems/container-with-most-water/) \[[Solution](https://hackmd.io/@siansiansu/HkBgaO4XR)\]
- 🟥 [42\. Trapping Rain Water](https://leetcode.com/problems/trapping-rain-water/) \[[Solution](https://hackmd.io/@siansiansu/S1gCsFV7R)\]
### Complex Processing
Problems requiring more complex logic with two pointers.
- 🟥 [68\. Text Justification](https://leetcode.com/problems/text-justification/) \[[Solution](https://hackmd.io/@siansiansu/S1hWFmzB0)\]
Two Pointers in Different Data Structures
-----------------------------------------
### String Operations
Applying two pointers technique to string problems.
- 🟩 [392\. Is Subsequence](https://leetcode.com/problems/is-subsequence/) \[[Solution](https://hackmd.io/@siansiansu/ryxPCAWBC)\]
- 🟩 [844\. Backspace String Compare](https://leetcode.com/problems/backspace-string-compare/) \[[Solution](https://hackmd.io/@siansiansu/rJaqk1OGR)\]
Problem Difficulty Legend
-------------------------
- 🟩 Easy
- 🟨 Medium
- 🟧 Medium-Hard
- 🟥 Hard
- ⬛ Very Hard
Additional Resources
--------------------
- [Two Pointers Technique (GeeksforGeeks)](https://www.geeksforgeeks.org/two-pointers-technique/)
- [Leetcode Patterns: Two Pointers](https://leetcode.com/discuss/study-guide/1688903/Solved-all-two-pointers-problems-in-100-days)
- [Two Pointers Algorithm for Beginners](https://medium.com/swlh/two-pointer-algorithm-for-beginners-73da0127d883)