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)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.
STTTiêu đềLời giảiĐộ khóĐộ phức tạp thời gianĐộ phức tạp bộ nhớYêu thíchTỷ lệ AC (Acceptance)
0020Dấu ngoặc hợp lệ (Valid Parentheses)GoEasyO(log n)O(1)40.2%
0032Chuỗi dấu ngoặc hợp lệ dài nhất (Longest Valid Parentheses)GoHard32.8%
0042Hứng nước mưa (Trapping Rain Water)GoHardO(n)O(1)❤️59.2%
0071Rút gọn đường dẫn (Simplify Path)GoMediumO(n)O(n)❤️39.3%
0084Hình chữ nhật lớn nhất trong histogram (Largest Rectangle in Histogram)GoHardO(n)O(n)❤️42.6%
0094Duyệt trung thứ tự cây nhị phân (Binary Tree Inorder Traversal)GoEasyO(n)O(1)73.8%
0114Làm phẳng cây nhị phân thành danh sách liên kết (Flatten Binary Tree to Linked List)GoMedium61.8%
0143Sắp xếp lại danh sách (Reorder List)GoMedium52.5%
0144Duyệt tiền thứ tự cây nhị phân (Binary Tree Preorder Traversal)GoEasyO(n)O(1)66.8%
0145Duyệt hậu thứ tự cây nhị phân (Binary Tree Postorder Traversal)GoEasyO(n)O(1)67.9%
0150Tính biểu thức ký pháp Ba Lan ngược (Evaluate Reverse Polish Notation)GoMediumO(n)O(1)45.7%
0155Ngăn xếp min (Min Stack)GoMediumO(n)O(n)52.3%
0173Bộ lặp cây nhị phân tìm kiếm (Binary Search Tree Iterator)GoMediumO(n)O(1)69.7%
0224Máy tính cơ bản (Basic Calculator)GoHardO(n)O(n)42.4%
0225Cài đặt ngăn xếp bằng hàng đợi (Implement Stack using Queues)GoEasyO(n)O(n)58.6%
0227Máy tính cơ bản II (Basic Calculator II)GoMedium42.4%
0232Cài đặt hàng đợi bằng ngăn xếp (Implement Queue using Stacks)GoEasyO(n)O(n)63.2%
0234Danh sách liên kết đối xứng (Palindrome Linked List)GoEasy50.2%
0331Xá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)GoMediumO(n)O(1)44.6%
0341Trình lặp danh sách lồng nhau (Flatten Nested List Iterator)GoMedium61.8%
0385Trình phân tích cú pháp mini (Mini Parser)GoMedium36.9%
0394Giải mã chuỗi (Decode String)GoMediumO(n)O(n)57.9%
0402Xóa K chữ số (Remove K Digits)GoMediumO(n)O(1)30.6%
0445Cộng hai số II (Add Two Numbers II)GoMedium59.6%
0456Mẫu 132 (132 Pattern)GoMediumO(n)O(n)32.4%
0496Phần tử lớn hơn tiếp theo I (Next Greater Element I)GoEasyO(n)O(n)71.4%
0503Phần tử lớn hơn tiếp theo II (Next Greater Element II)GoMediumO(n)O(n)63.2%
0581Mảng con liên tục chưa sắp xếp ngắn nhất (Shortest Unsorted Continuous Subarray)GoMedium36.4%
0589Duyệt tiền thứ tự cây N nhánh (N-ary Tree Preorder Traversal)GoEasy75.9%
0636Thời gian độc quyền của các hàm (Exclusive Time of Functions)GoMediumO(n)O(n)61.2%
0682Trò chơi bóng chày (Baseball Game)GoEasyO(n)O(n)74.3%
0726Số lượng nguyên tử (Number of Atoms)GoHardO(n)O(n)❤️52.1%
0735Va chạm tiểu hành tinh (Asteroid Collision)GoMediumO(n)O(n)44.4%
0739Nhiệt độ hằng ngày (Daily Temperatures)GoMediumO(n)O(n)66.3%
0844So sánh chuỗi với phím backspace (Backspace String Compare)GoEasyO(n)O(n)48.1%
0853Đoàn xe (Car Fleet)GoMedium50.3%
0856Điểm số của dấu ngoặc (Score of Parentheses)GoMediumO(n)O(n)64.8%
0880Ký tự tại chỉ số trong chuỗi đã giải mã (Decoded String at Index)GoMediumO(n)O(n)28.3%
0895Ngăn xếp tần suất lớn nhất (Maximum Frequency Stack)GoHardO(n)O(n)66.6%
0897Cây tìm kiếm theo thứ tự tăng dần (Increasing Order Search Tree)GoEasy78.4%
0901Biên độ cổ phiếu trực tuyến (Online Stock Span)GoMediumO(n)O(n)65.2%
0907Tổng giá trị nhỏ nhất của mảng con (Sum of Subarray Minimums)GoMediumO(n)O(n)❤️35.8%
0921Số lần thêm tối thiểu để dấu ngoặc hợp lệ (Minimum Add to Make Parentheses Valid)GoMediumO(n)O(n)75.8%
0946Xác thực chuỗi ngăn xếp (Validate Stack Sequences)GoMediumO(n)O(n)67.7%
1003Kiểm tra từ hợp lệ sau khi thay thế (Check If Word Is Valid After Substitutions)GoMediumO(n)O(1)58.2%
1006Giai thừa vụng về (Clumsy Factorial)GoMedium55.4%
1019Nút lớn hơn kế tiếp trong danh sách liên kết (Next Greater Node In Linked List)GoMediumO(n)O(1)59.9%
1021Xóa dấu ngoặc ngoài cùng (Remove Outermost Parentheses)GoEasyO(n)O(1)80.6%
1047Xóa các ký tự trùng kề nhau trong chuỗi (Remove All Adjacent Duplicates In String)GoEasyO(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)GoMedium73.0%
1190Đảo chuỗi con giữa mỗi cặp dấu ngoặc (Reverse Substrings Between Each Pair of Parentheses)GoMedium65.9%
1209Xóa các ký tự trùng kề nhau trong chuỗi II (Remove All Adjacent Duplicates in String II)GoMedium56.2%
1249Xóa tối thiểu để dấu ngoặc hợp lệ (Minimum Remove to Make Valid Parentheses)GoMedium65.8%
1614Độ sâu lồng tối đa của dấu ngoặc (Maximum Nesting Depth of the Parentheses)GoEasy82.3%
1653Số lần xóa tối thiểu để chuỗi cân bằng (Minimum Deletions to Make String Balanced)GoMedium58.9%
1673Tìm dãy con cạnh tranh nhất (Find the Most Competitive Subsequence)GoMedium49.3%
1700Số học sinh không ăn được bữa trưa (Number of Students Unable to Eat Lunch)GoEasy68.7%
------------------------------------------------------------------------------------------------------------------------------------------------