2.05 ✅ Ngăn xếp (Stack)

- Bài toán khớp dấu ngoặc (parentheses matching) và các bài tương tự. Bài 20, 921, 1021.
- Các thao tác cơ bản của ngăn xếp: đẩy (push) và lấy ra (pop). Bài 71, 150, 155, 224, 225, 232, 946, 1047.
- Dùng ngăn xếp để xử lý các bài toán mã hoá/giải mã (encoding/decoding). Bài 394, 682, 856, 880.
- Ngăn xếp đơn điệu (monotonic stack): dùng stack để duy trì một mảng chỉ số (index array) đơn điệu tăng hoặc giảm. Bài 84, 456, 496, 503, 739, 901, 907, 1019.
| 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) |
|---|---|---|---|---|---|---|---|
| 0020 | Dấu ngoặc hợp lệ (Valid Parentheses) | Go | Easy | O(log n) | O(1) | 40.2% | |
| 0032 | Chuỗi dấu ngoặc hợp lệ dài nhất (Longest Valid Parentheses) | Go | Hard | 32.8% | |||
| 0042 | Hứng nước mưa (Trapping Rain Water) | Go | Hard | O(n) | O(1) | ❤️ | 59.2% |
| 0071 | Rút gọn đường dẫn (Simplify Path) | Go | Medium | O(n) | O(n) | ❤️ | 39.3% |
| 0084 | Hình chữ nhật lớn nhất trong histogram (Largest Rectangle in Histogram) | Go | Hard | O(n) | O(n) | ❤️ | 42.6% |
| 0094 | Duyệt trung thứ tự cây nhị phân (Binary Tree Inorder Traversal) | Go | Easy | O(n) | O(1) | 73.8% | |
| 0114 | Làm phẳng cây nhị phân thành danh sách liên kết (Flatten Binary Tree to Linked List) | Go | Medium | 61.8% | |||
| 0143 | Sắp xếp lại danh sách (Reorder List) | Go | Medium | 52.5% | |||
| 0144 | Duyệt tiền thứ tự cây nhị phân (Binary Tree Preorder Traversal) | Go | Easy | O(n) | O(1) | 66.8% | |
| 0145 | Duyệt hậu thứ tự cây nhị phân (Binary Tree Postorder Traversal) | Go | Easy | O(n) | O(1) | 67.9% | |
| 0150 | Tính biểu thức ký pháp Ba Lan ngược (Evaluate Reverse Polish Notation) | Go | Medium | O(n) | O(1) | 45.7% | |
| 0155 | Ngăn xếp min (Min Stack) | Go | Medium | O(n) | O(n) | 52.3% | |
| 0173 | Bộ lặp cây nhị phân tìm kiếm (Binary Search Tree Iterator) | Go | Medium | O(n) | O(1) | 69.7% | |
| 0224 | Máy tính cơ bản (Basic Calculator) | Go | Hard | O(n) | O(n) | 42.4% | |
| 0225 | Cài đặt ngăn xếp bằng hàng đợi (Implement Stack using Queues) | Go | Easy | O(n) | O(n) | 58.6% | |
| 0227 | Máy tính cơ bản II (Basic Calculator II) | Go | Medium | 42.4% | |||
| 0232 | Cài đặt hàng đợi bằng ngăn xếp (Implement Queue using Stacks) | Go | Easy | O(n) | O(n) | 63.2% | |
| 0234 | Danh sách liên kết đối xứng (Palindrome Linked List) | Go | Easy | 50.2% | |||
| 0331 | Xác minh tuần tự hóa tiền thứ tự của cây nhị phân (Verify Preorder Serialization of a Binary Tree) | Go | Medium | O(n) | O(1) | 44.6% | |
| 0341 | Trình lặp danh sách lồng nhau (Flatten Nested List Iterator) | Go | Medium | 61.8% | |||
| 0385 | Trình phân tích cú pháp mini (Mini Parser) | Go | Medium | 36.9% | |||
| 0394 | Giải mã chuỗi (Decode String) | Go | Medium | O(n) | O(n) | 57.9% | |
| 0402 | Xóa K chữ số (Remove K Digits) | Go | Medium | O(n) | O(1) | 30.6% | |
| 0445 | Cộng hai số II (Add Two Numbers II) | Go | Medium | 59.6% | |||
| 0456 | Mẫu 132 (132 Pattern) | Go | Medium | O(n) | O(n) | 32.4% | |
| 0496 | Phần tử lớn hơn tiếp theo I (Next Greater Element I) | Go | Easy | O(n) | O(n) | 71.4% | |
| 0503 | Phần tử lớn hơn tiếp theo II (Next Greater Element II) | Go | Medium | O(n) | O(n) | 63.2% | |
| 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% | |||
| 0589 | Duyệt tiền thứ tự cây N nhánh (N-ary Tree Preorder Traversal) | Go | Easy | 75.9% | |||
| 0636 | Thời gian độc quyền của các hàm (Exclusive Time of Functions) | Go | Medium | O(n) | O(n) | 61.2% | |
| 0682 | Trò chơi bóng chày (Baseball Game) | Go | Easy | O(n) | O(n) | 74.3% | |
| 0726 | Số lượng nguyên tử (Number of Atoms) | Go | Hard | O(n) | O(n) | ❤️ | 52.1% |
| 0735 | Va chạm tiểu hành tinh (Asteroid Collision) | Go | Medium | O(n) | O(n) | 44.4% | |
| 0739 | Nhiệt độ hằng ngày (Daily Temperatures) | Go | Medium | O(n) | O(n) | 66.3% | |
| 0844 | So sánh chuỗi với phím backspace (Backspace String Compare) | Go | Easy | O(n) | O(n) | 48.1% | |
| 0853 | Đoàn xe (Car Fleet) | Go | Medium | 50.3% | |||
| 0856 | Điểm số của dấu ngoặc (Score of Parentheses) | Go | Medium | O(n) | O(n) | 64.8% | |
| 0880 | Ký tự tại chỉ số trong chuỗi đã giải mã (Decoded String at Index) | Go | Medium | O(n) | O(n) | 28.3% | |
| 0895 | Ngăn xếp tần suất lớn nhất (Maximum Frequency Stack) | Go | Hard | O(n) | O(n) | 66.6% | |
| 0897 | Cây tìm kiếm theo thứ tự tăng dần (Increasing Order Search Tree) | Go | Easy | 78.4% | |||
| 0901 | Biên độ cổ phiếu trực tuyến (Online Stock Span) | Go | Medium | O(n) | O(n) | 65.2% | |
| 0907 | Tổng giá trị nhỏ nhất của mảng con (Sum of Subarray Minimums) | Go | Medium | O(n) | O(n) | ❤️ | 35.8% |
| 0921 | Số lần thêm tối thiểu để dấu ngoặc hợp lệ (Minimum Add to Make Parentheses Valid) | Go | Medium | O(n) | O(n) | 75.8% | |
| 0946 | Xác thực chuỗi ngăn xếp (Validate Stack Sequences) | Go | Medium | O(n) | O(n) | 67.7% | |
| 1003 | Kiểm tra từ hợp lệ sau khi thay thế (Check If Word Is Valid After Substitutions) | Go | Medium | O(n) | O(1) | 58.2% | |
| 1006 | Giai thừa vụng về (Clumsy Factorial) | Go | Medium | 55.4% | |||
| 1019 | Nút lớn hơn kế tiếp trong danh sách liên kết (Next Greater Node In Linked List) | Go | Medium | O(n) | O(1) | 59.9% | |
| 1021 | Xóa dấu ngoặc ngoài cùng (Remove Outermost Parentheses) | Go | Easy | O(n) | O(1) | 80.6% | |
| 1047 | Xóa các ký tự trùng kề nhau trong chuỗi (Remove All Adjacent Duplicates In String) | Go | Easy | O(n) | O(1) | 69.7% | |
| 1111 | Độ sâu lồng tối đa của hai chuỗi ngoặc hợp lệ (Maximum Nesting Depth of Two Valid Parentheses Strings) | Go | Medium | 73.0% | |||
| 1190 | Đảo chuỗi con giữa mỗi cặp dấu ngoặc (Reverse Substrings Between Each Pair of Parentheses) | Go | Medium | 65.9% | |||
| 1209 | Xóa các ký tự trùng kề nhau trong chuỗi II (Remove All Adjacent Duplicates in String II) | Go | Medium | 56.2% | |||
| 1249 | Xóa tối thiểu để dấu ngoặc hợp lệ (Minimum Remove to Make Valid Parentheses) | Go | Medium | 65.8% | |||
| 1614 | Độ sâu lồng tối đa của dấu ngoặc (Maximum Nesting Depth of the Parentheses) | Go | Easy | 82.3% | |||
| 1653 | Số lần xóa tối thiểu để chuỗi cân bằng (Minimum Deletions to Make String Balanced) | Go | Medium | 58.9% | |||
| 1673 | Tìm dãy con cạnh tranh nhất (Find the Most Competitive Subsequence) | Go | Medium | 49.3% | |||
| 1700 | Số học sinh không ăn được bữa trưa (Number of Students Unable to Eat Lunch) | Go | Easy | 68.7% | |||
| ------------ | ------------------------------------------------------- | ------- | ---------------- | --------------- | ------------- | ------------- | ------------- |