程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> LeetCode——Min Stack

LeetCode——Min Stack

編輯:C++入門知識

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. 原題鏈接:https://oj.leetcode.com/problems/min-stack/ 取出棧中的最小元素需要常數時間。 可以用兩個棧來實現,其中一個棧存儲的是全部的元素,而另一個棧存儲的是前一個棧中的最小元素,這樣每次更新後一個棧即可。
    public class MinStack {
    	private List stack = new ArrayList();
    	private List minstack = new ArrayList();
    	public void push(int x) {
    		stack.add(x);
    		if(minstack.isEmpty() || minstack.get(minstack.size()-1) >= x)
    			minstack.add(x);
    	}
    
    	public void pop() {
    		if(stack.isEmpty())
    			return;
    		int tmp = stack.remove(stack.size()-1);
    		if(!minstack.isEmpty() && tmp == minstack.get(minstack.size()-1))
    			minstack.remove(minstack.size()-1);
    	}
    
    	public int top() {
    		if(!stack.isEmpty())
    			return stack.get(stack.size()-1);
    		return -1;
    	}
    
    	public int getMin() {
    		if(!minstack.isEmpty())
    			return minstack.get(minstack.size()-1);
    		return -1;
    	}
    }
    




  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved