Min Stack
Description
Implement a stack with following functions:
push(val) push val into the stack
pop() pop the top element and return it
min() return the smallest number in the stack
All above should be in O(1) cost
class Node {
public int val ;
public Node next ;
public Node(int value){
this.val = value ;
}
}
public class MinStack {
public Node dummy ;
public MinStack() {
// do intialization if necessary
dummy = new Node(-1);
}
/*
* @param number: An integer
* @return: nothing
*/
public void push(int number) {
// write your code here
Node node = new Node(number) ;
node.next = dummy.next ;
dummy.next = node ;
}
/*
* @return: An integer
*/
public int pop() {
// write your code here
int eve = dummy.next.val ;
dummy.next = dummy.next.next ;
return eve ;
}
/*
* @return: An integer
*/
public Node head ;
public int min() {
// write your code here
int minValue = Integer.MAX_VALUE ;
head = dummy.next ;
while(head != null){
if(head.val < minValue){
minValue = head.val ;
}
head = head.next ;
}
return minValue ;
}
}