2.03 ✅ Hai con trỏ (Two Pointers)

- Cách viết kinh điển của hai con trỏ + cửa sổ trượt (two pointers + sliding window). Con trỏ phải liên tục dịch sang phải cho đến khi không thể dịch tiếp (điều kiện cụ thể tuỳ bài). Khi con trỏ phải chạm biên phải, bắt đầu dịch con trỏ trái để “nhả” biên trái của cửa sổ. Các bài: 3, 76, 209, 424, 438, 567, 713, 763, 845, 881, 904, 978, 992, 1004, 1040, 1052.
left, right := 0, -1 for left < len(s) { if right+1 < len(s) && freq[s[right+1]-'a'] == 0 { freq[s[right+1]-'a']++ right++ } else { freq[s[left]-'a']-- left++ } result = max(result, right-left+1) }
- Con trỏ nhanh/chậm (fast/slow pointers) có thể dùng để tìm số bị lặp, độ phức tạp thời gian . Bài 287.
- Sau khi thay thế ký tự, tìm độ dài lớn nhất của đoạn liên tiếp gồm cùng một ký tự. Bài 424.
- Bộ bài toán SUM (SUM problems). Các bài: 1, 15, 16, 18, 167, 923, 1074.
| STT | Tiêu đề | Lời giải | Độ khó | Độ phức tạp thời gian | Độ phức tạp bộ nhớ | Yêu thích | Tỷ lệ AC (Acceptance) |
|---|---|---|---|---|---|---|---|
| 0011 | Thùng chứa nhiều nước nhất (Container With Most Water) | Go | Medium | O(n) | O(1) | 54.0% | |
| 0015 | Tổng 3 số (3Sum) | Go | Medium | O(n^2) | O(n) | ❤️ | 32.6% |
| 0016 | Tổng 3 số gần nhất (3Sum Closest) | Go | Medium | O(n^2) | O(1) | ❤️ | 45.8% |
| 0018 | Tổng 4 số (4Sum) | Go | Medium | O(n^3) | O(n^2) | ❤️ | 35.9% |
| 0019 | Xóa nút thứ N từ cuối danh sách (Remove Nth Node From End of List) | Go | Medium | O(n) | O(1) | 41.0% | |
| 0026 | Xóa phần tử trùng trong mảng đã sắp xếp (Remove Duplicates from Sorted Array) | Go | Easy | O(n) | O(1) | 51.5% | |
| 0027 | Xóa phần tử (Remove Element) | Go | Easy | O(n) | O(1) | 53.0% | |
| 0028 | Tìm vị trí xuất hiện đầu tiên của chuỗi con (Find the Index of the First Occurrence in a String) | Go | Easy | O(n) | O(1) | 39.0% | |
| 0031 | Hoán vị kế tiếp (Next Permutation) | Go | Medium | 37.5% | |||
| 0042 | Hứng nước mưa (Trapping Rain Water) | Go | Hard | O(n) | O(1) | ❤️ | 59.2% |
| 0061 | Xoay danh sách liên kết (Rotate List) | Go | Medium | O(n) | O(1) | 36.1% | |
| 0075 | Sắp xếp màu (Sort Colors) | Go | Medium | O(n) | O(1) | ❤️ | 58.5% |
| 0080 | Xóa phần tử trùng trong mảng đã sắp xếp II (Remove Duplicates from Sorted Array II) | Go | Medium | O(n) | O(1) | 52.3% | |
| 0082 | Xóa phần tử trùng trong danh sách đã sắp xếp II (Remove Duplicates from Sorted List II) | Go | Medium | 45.9% | |||
| 0086 | Phân hoạch danh sách (Partition List) | Go | Medium | O(n) | O(1) | ❤️ | 52.0% |
| 0088 | Trộn hai mảng đã sắp xếp (Merge Sorted Array) | Go | Easy | O(n) | O(1) | ❤️ | 46.6% |
| 0125 | Palindrome hợp lệ (Valid Palindrome) | Go | Easy | O(n) | O(1) | 44.3% | |
| 0141 | Chu trình trong danh sách liên kết (Linked List Cycle) | Go | Easy | O(n) | O(1) | ❤️ | 47.4% |
| 0142 | Chu trình trong danh sách liên kết II (Linked List Cycle II) | Go | Medium | O(n) | O(1) | ❤️ | 48.7% |
| 0143 | Sắp xếp lại danh sách (Reorder List) | Go | Medium | 52.5% | |||
| 0148 | Sắp xếp danh sách (Sort List) | Go | Medium | 55.1% | |||
| 0151 | Đảo thứ tự các từ trong chuỗi (Reverse Words in a String) | Go | Medium | 32.7% | |||
| 0160 | Giao nhau của hai danh sách liên kết (Intersection of Two Linked Lists) | Go | Easy | 54.3% | |||
| 0167 | Hai tổng II - Mảng đầu vào đã sắp xếp (Two Sum II - Input Array Is Sorted) | Go | Medium | O(n) | O(1) | 60.0% | |
| 0189 | Xoay mảng (Rotate Array) | Go | Medium | 39.4% | |||
| 0202 | Số hạnh phúc (Happy Number) | Go | Easy | 54.8% | |||
| 0234 | Danh sách liên kết đối xứng (Palindrome Linked List) | Go | Easy | O(n) | O(1) | 50.2% | |
| 0283 | Dồn các số 0 về cuối (Move Zeroes) | Go | Easy | O(n) | O(1) | 61.4% | |
| 0287 | Tìm số bị lặp (Find the Duplicate Number) | Go | Medium | O(n) | O(1) | ❤️ | 59.1% |
| 0344 | Đảo chuỗi (Reverse String) | Go | Easy | O(n) | O(1) | 76.7% | |
| 0345 | Đảo nguyên âm trong chuỗi (Reverse Vowels of a String) | Go | Easy | O(n) | O(1) | 50.1% | |
| 0349 | Giao của hai mảng (Intersection of Two Arrays) | Go | Easy | O(n) | O(n) | 70.9% | |
| 0350 | Giao của hai mảng II (Intersection of Two Arrays II) | Go | Easy | O(n) | O(n) | 56.0% | |
| 0392 | Có phải là dãy con (Is Subsequence) | Go | Easy | 47.6% | |||
| 0455 | Phân phát bánh quy (Assign Cookies) | Go | Easy | 49.9% | |||
| 0457 | Vòng lặp mảng vòng tròn (Circular Array Loop) | Go | Medium | 32.6% | |||
| 0475 | Máy sưởi (Heaters) | Go | Medium | 36.5% | |||
| 0524 | Từ dài nhất trong từ điển bằng cách xóa (Longest Word in Dictionary through Deleting) | Go | Medium | O(n) | O(1) | 51.0% | |
| 0532 | Các cặp K-diff trong mảng (K-diff Pairs in an Array) | Go | Medium | O(n) | O(n) | 41.2% | |
| 0541 | Đảo chuỗi II (Reverse String II) | Go | Easy | 50.5% | |||
| 0557 | Đảo các từ trong chuỗi III (Reverse Words in a String III) | Go | Easy | 81.9% | |||
| 0567 | Hoán vị trong chuỗi (Permutation in String) | Go | Medium | O(n) | O(1) | ❤️ | 44.3% |
| 0581 | Mảng con liên tục chưa sắp xếp ngắn nhất (Shortest Unsorted Continuous Subarray) | Go | Medium | 36.4% | |||
| 0611 | Số tam giác hợp lệ (Valid Triangle Number) | Go | Medium | 50.5% | |||
| 0633 | Tổng của các số chính phương (Sum of Square Numbers) | Go | Medium | 34.4% | |||
| 0653 | Hai tổng IV - Đầu vào là BST (Two Sum IV - Input is a BST) | Go | Easy | 61.0% | |||
| 0658 | Tìm K phần tử gần nhất (Find K Closest Elements) | Go | Medium | 46.8% | |||
| 0696 | Đếm chuỗi con nhị phân (Count Binary Substrings) | Go | Easy | 65.5% | |||
| 0719 | Tìm khoảng cách cặp nhỏ nhất thứ K (Find K-th Smallest Pair Distance) | Go | Hard | 36.7% | |||
| 0763 | Phân hoạch nhãn (Partition Labels) | Go | Medium | O(n) | O(1) | ❤️ | 79.7% |
| 0795 | Số mảng con có giá trị lớn nhất bị chặn (Number of Subarrays with Bounded Maximum) | Go | Medium | 52.8% | |||
| 0821 | Khoảng cách ngắn nhất tới một ký tự (Shortest Distance to a Character) | Go | Easy | 71.3% | |||
| 0825 | Bạn bè có độ tuổi phù hợp (Friends Of Appropriate Ages) | Go | Medium | 46.3% | |||
| 0826 | Phân công công việc có lợi nhuận cao nhất (Most Profit Assigning Work) | Go | Medium | O(n log n) | O(n) | 44.9% | |
| 0832 | Lật ảnh (Flipping an Image) | Go | Easy | 80.8% | |||
| 0838 | Đẩy quân domino (Push Dominoes) | Go | Medium | O(n) | O(n) | 57.0% | |
| 0844 | So sánh chuỗi với phím backspace (Backspace String Compare) | Go | Easy | O(n) | O(n) | 48.1% | |
| 0845 | Núi dài nhất trong mảng (Longest Mountain in Array) | Go | Medium | O(n) | O(1) | 40.2% | |
| 0870 | Xáo trộn để có lợi thế (Advantage Shuffle) | Go | Medium | 51.8% | |||
| 0876 | Nút giữa của danh sách liên kết (Middle of the Linked List) | Go | Easy | 75.6% | |||
| 0881 | Thuyền cứu người (Boats to Save People) | Go | Medium | O(n log n) | O(1) | 53.1% | |
| 0922 | Sắp xếp mảng theo tính chẵn/lẻ II (Sort Array By Parity II) | Go | Easy | 70.7% | |||
| 0923 | Tổng 3 số với bội số (3Sum With Multiplicity) | Go | Medium | O(n^2) | O(n) | 45.3% | |
| 0925 | Tên bị nhấn giữ (Long Pressed Name) | Go | Easy | O(n) | O(1) | 33.1% | |
| 0942 | Ghép chuỗi DI (DI String Match) | Go | Easy | 77.3% | |||
| 0969 | Sắp xếp pancake (Pancake Sorting) | Go | Medium | 70.1% | |||
| 0977 | Bình phương của mảng đã sắp xếp (Squares of a Sorted Array) | Go | Easy | O(n) | O(1) | 71.9% | |
| 0986 | Giao nhau của các danh sách đoạn (Interval List Intersections) | Go | Medium | O(n) | O(1) | 71.3% | |
| 1040 | Di chuyển đá đến khi liên tiếp II (Moving Stones Until Consecutive II) | Go | Medium | 55.9% | |||
| 1048 | Chuỗi từ dài nhất (Longest String Chain) | Go | Medium | 59.2% | |||
| 1089 | Nhân đôi số 0 (Duplicate Zeros) | Go | Easy | 51.5% | |||
| 1332 | Xóa các dãy con đối xứng (Remove Palindromic Subsequences) | Go | Easy | 76.2% | |||
| 1385 | Tìm giá trị khoảng cách giữa hai mảng (Find the Distance Value Between Two Arrays) | Go | Easy | 66.5% | |||
| 1679 | Số lượng tối đa các cặp có tổng K (Max Number of K-Sum Pairs) | Go | Medium | 57.3% | |||
| 1721 | Hoán đổi các nút trong danh sách liên kết (Swapping Nodes in a Linked List) | Go | Medium | 67.2% | |||
| 1877 | Giảm thiểu tổng cặp lớn nhất trong mảng (Minimize Maximum Pair Sum in Array) | Go | Medium | 79.9% | |||
| ---------- | ---------------------------- | ------- | --------------- | ----------- | ----------- | ---------- | ------------ |