leetcode_Min Stack

描述:

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.

思路:

本题目的解法是用到了两个栈,一个用来存元素,另一个用来存最小元素,元素入栈时和minStack栈里面的栈顶元素相比,小于栈顶元素则存入,大于栈顶元素则栈顶元素(当前元素中的最小值)入栈。其中,需要注意的是元素出栈时,要随时更新当前栈中的最小元素min=minStack.top()

代码:

 Stack<Integer> st = new Stack<Integer>();
	Stack<Integer> stMin = new Stack<Integer>();
	int min = 0;

	public void push(int x) {
		if (!st.isEmpty()) {
			if (min > x) {
				st.push(x);
				stMin.push(x);
				min = x;
			} else {
				st.push(x);
				stMin.push(min);
			}

		} else {
			st.push(x);
			stMin.push(x);
			min = x;
		}
	}

	public void pop() {
		st.pop();
		stMin.pop();
		if (!stMin.isEmpty())//元素出栈时要记着更新当前栈中的最小值
			min = stMin.peek();

	}

	public int top() {
		return st.peek();
	}

	public int getMin() {
		return stMin.peek();
	}

结果:

leetcode_Min Stack_第1张图片

你可能感兴趣的:(stack,min,最小栈)