Dinner Plate Stacks
hard · 33.5% accepted · 516 likes · top 11%
hash table · stack · design · heap (priority queue)
Description
You have an infinite number of stacks arranged in a row and numbered (left to right) from 0, each of the stacks has the same maximum capacity.
Implement the DinnerPlates class:
- DinnerPlates(int capacity) Initializes the object with the maximum capacity of the stacks capacity.
- void push(int val) Pushes the given integer val into the leftmost stack with a size less than capacity.
- int pop() Returns the value at the top of the rightmost non-empty stack and removes it from that stack, and returns -1 if all the stacks are empty.
- int popAtStack(int index) Returns the value at the top of the stack with the given index index and removes it from that stack or returns -1 if the stack with that given index is empty.
Example 1:
Example 2:
Solution