Two Pointers — Minh hoạ tương tác
Ba module: (1) Đối đầu — two-sum sorted; (2) Fast-slow — phát hiện chu trình linked list; (3) Three-sum — cố định i + two-pointer.
1. Đối đầu (Opposite ends) — Two-sum sorted
Mảng đã sắp xếp. l bắt đầu trái, r bắt đầu phải. Mỗi bước: nếu tổng > target → r--; nếu < target → l++; bằng → tìm thấy.
Nhấn "Bước tiếp" để bắt đầu. l=0, r=n-1.
2. Fast-slow — Floyd cycle detection
slow đi +1 bước, fast đi +2 bước. Nếu có chu trình, fast sẽ bắt kịp slow. List dưới đây: 1→2→3→4→5→6, node 6 trỏ ngược về node 3 (cycle).
slow (+1)
fast (+2)
gặp nhau
slow=node1, fast=node1. Nhấn "Bước tiếp".
3. Three-sum — cố định i + two-pointer
Sort trước. i cố định lần lượt; với mỗi i, l=i+1 và r=n-1 quét tìm nums[l]+nums[r] == -nums[i]. Mục tiêu tổng = 0.
Sẽ sort rồi bắt đầu. Nhấn "Bước tiếp".
Bộ ba tìm thấy: (chưa có)