码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode_Min Stack

时间:2015-04-04 21:16:38      阅读:168      评论:0      收藏:0      [点我收藏+]

标签: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

标签:min stack   最小栈   

原文地址:http://blog.csdn.net/mnmlist/article/details/44875789

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!