leetcode------Min Stack

标题: Min Stack
通过率: 15.2%
难度: 简单

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.

本题如果直接用java内置的stack,那么迎刃而解,出这个题的目的就是不让用把。我直接用了模拟栈,头插入链表去解决这个问题,题目相对比较简单,实现的时候做好为空判断和最小值的问题,看代码就能看出来最小值的问题。代码如下:

 1 class MinStack {

 2     Node top = null;

 3 

 4     public void push(int x) {

 5         if (top == null) {

 6             top = new Node(x);

 7             top.min = x;

 8         } else {

 9             Node temp = new Node(x);

10             temp.next = top;

11             top = temp;

12             top.min = Math.min(top.next.min, x);

13         }

14     }

15 

16     public void pop() {

17         top = top.next;

18  

19     }

20 

21     public int top() {

22         return top == null ? 0 : top.val;

23     }

24 

25     public int getMin() {

26         return top == null ? 0 : top.min;

27     }

28 }

29 

30 class Node {

31     int val;

32     int min;

33     Node next;

34 

35     public Node(int val) {

36         this.val = val;

37     }

38 }

 

你可能感兴趣的:(LeetCode)