您的位置:首页 > 其它

Leetcode - Min Stack

2016-04-30 16:02 393 查看

Question

Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

push(x) – Push element x onto stack.

pop() – Removes the element on top of the stack.

top() – Get the top element.

getMin() – Retrieve the minimum element in the stack.

Note

Your MinStack object will be instantiated and called as such:

MinStack obj = new MinStack();
obj.push(x);
obj.pop();
int param_3 = obj.top();
int param_4 = obj.getMin();


Java Code

public class MinStack {
/** initialize your data structure here. */
class Node {
int val;
Node next;
Node(int x, Node n) {
val = x;
next = n;
}
}

/**
* 实现方式:
*      同时维护两个链表,一个用于存储栈内的数据,一个用于储存当前栈内的最小值,
*      且两者的push和pop操作保持同步
*/
Node head = null;
Node minhead = new Node(Integer.MAX_VALUE, null);

public MinStack() {

}

public void push(int x) {
head = new Node(x, head);
if(x < minhead.val)
minhead = new Node(x, minhead);
else
minhead = new Node(minhead.val, minhead);
}

public void pop() {
head = head.next;
minhead = minhead.next;
}

public int top() {
return head.val;
}

public int getMin() {
return minhead.val;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode stack min