Trung bình 0 đã giải Tỷ lệ chấp nhận 0%

Min Stack

Build a stack that reports its smallest element instantly after any push or pop.

Bạn sẽ học được gì

  • Track the minimum alongside each push
  • Answer min queries in constant time
  • Handle pops on an empty stack safely

Đề bài

Xem bản dịch

A generic Stack<T> works for any type. Here you extend the idea: a stack of integers that can also report its minimum in constant time.

Process the operations in order:

  • push <x>: push x.
  • pop: remove the top value (ignored when the stack is empty).
  • min: report the smallest value currently in the stack, or -1 if it is empty.

Implement min_stack_operations(operations).

Input

operations: The operations.

Output

Return the answers of the min operations, in order.

Ràng buộc

1 ≤ number of operations ≤ 200,000

0 ≤ x ≤ 10^9

Ví dụ

Ví dụ 1
Đầu vào:
operations = ["push 5", "push 3", "min", "pop", "min"]

Kết quả mong đợi:
expected = [3, 5]
Đầu vào:
std::vector<std::string> operations = {"push 5", "push 3", "min", "pop", "min"};

Kết quả mong đợi:
std::vector<long long> expected = {3, 5};
Đầu vào:
string[] operations = new string[] {"push 5", "push 3", "min", "pop", "min"};

Kết quả mong đợi:
long[] expected = new long[] {3, 5};

Giải thích

With 5 and 3 on the stack the minimum is 3. After popping 3, only 5 is left: [3, 5].

Ví dụ 2
Đầu vào:
operations = ["min", "pop", "push 7", "min"]

Kết quả mong đợi:
expected = [-1, 7]
Đầu vào:
std::vector<std::string> operations = {"min", "pop", "push 7", "min"};

Kết quả mong đợi:
std::vector<long long> expected = {-1, 7};
Đầu vào:
string[] operations = new string[] {"min", "pop", "push 7", "min"};

Kết quả mong đợi:
long[] expected = new long[] {-1, 7};

Giải thích

The empty stack reports -1 and the pop is ignored; then the minimum is 7: [-1, 7].

Hướng tiếp cận

Hãy tự thử trước, sau đó mở từng gợi ý một.

Gợi ý 1

Store, next to each value, the minimum of the stack at that point.

Gợi ý 2

The current minimum is then simply the top of that second stack.

Gợi ý 3

Ignore pop on an empty stack, and answer -1 for min when it is empty.

Độ phức tạp mong đợi

O(number of operations) time, O(number of operations) extra space

Tham khảo

Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.

Học hỏi từ người khác

Giải pháp cộng đồng

Chưa có giải pháp nào được chia sẻ. Hãy giải thử thách này để đăng giải pháp đầu tiên.