Menu
CoddyTech

Implement Stack using Queues

Tạo một ngăn xếp vào sau, ra trước mà chỉ dùng hàng đợi để lưu trữ. Hàng đợi chỉ có thể thêm một phần tử vào cuối, xóa hoặc đọc phần tử ở đầu và cho biết kích thước. Ngăn xếp hỗ trợ push x (đặt x lên trên cùng), pop (xóa và trả về phần tử trên cùng), top (trả về phần tử trên cùng mà vẫn giữ nguyên phần tử đó) và empty (ngăn xếp có rỗng không?).

Các thao tác lần lượt nằm trong ops, trong đó args[i] chứa giá trị cần đẩy vào và 0 trong các trường hợp khác. Thực hiện chúng trên một ngăn xếp rỗng và trả về một chuỗi cho mỗi thao tác: "null" cho thao tác đẩy vào, số được chuyển thành văn bản cho thao tác lấy ra hoặc xem phần tử trên cùng, và "true" hoặc "false" cho thao tác kiểm tra rỗng.

Hàm

stackOps(ops: string-array, args: integer-array) → string-array
opsstring-array
các phép toán theo thứ tự chúng được thực hiện
argsinteger-array
giá trị cho mỗi thao tác push, 0 cho mọi thao tác khác
Trả vềstring-array
một câu trả lời cho mỗi phép toán, dưới dạng văn bản

Ràng buộc

  • 1 ≤ ops.length ≤ 1000
  • args.length == ops.length
  • Mỗi ops[i] là push, pop, top hoặc empty.
  • -109 ≤ args[i] ≤ 109 đối với thao tác push, và args[i] == 0 đối với mọi thao tác khác.
  • pop và top chỉ được gọi khi ngăn xếp có ít nhất một phần tử.

Ví dụ

Đầu vào
ops = ["push", "push", "top", "pop", "empty"]args = [1, 2, 0, 0, 0]
Đầu ra
["null", "null", "2", "2", "false"]
Giải thích
2 được đưa vào sau cùng nên nằm trên cùng: top và pop đều trả về "2". 1 vẫn còn bên trong nên empty trả về "false".
challenge icon

Câu hỏi mở rộng

Bạn có thể giữ một hàng đợi duy nhất nhưng chuyển phần xử lý từ thao tác push sang pop, để push có độ phức tạp O(1) không?

Đặt lại code
def stackOps(ops, args):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

ops = ["push", "push", "top", "pop", "empty"]
args = [1, 2, 0, 0, 0]

Đầu ra mong đợi

["null", "null", "2", "2", "false"]