Java算法之设计栈并返回栈中最小元素

问题:

实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。

【要求】 1.pop、push、getMin操作的时间复杂度都是O(1)。 2.设计的栈类型可以使用现成的栈结构。


 

思路:

具体代码实现:

package cn.itcats.array;

import java.util.Stack;

/**
 * 实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。
 * @author fatah
 */
public class MySatck {
	private Stack<Integer> dataStack;
	private Stack<Integer> minStack;
	
	public MySatck() {
		this.dataStack = new Stack<>();
		this.dataStack = new Stack<>();
	}
	
	public void push(int value) {
		if(this.minStack.isEmpty()) {
			this.minStack.push(value);
		}else if(value < this.getMin()) {
			this.minStack.push(value);
		}else {
			this.minStack.push(this.getMin());
		}
		this.dataStack.push(value);
	}
	
	public Integer pop() {
		if(this.dataStack.isEmpty()) {
			throw new RuntimeException("栈为空");
		}
		this.minStack.pop();
		return this.dataStack.pop();
	}
	
	public int getMin() {
		if(this.minStack.isEmpty()) {
			throw new RuntimeException("栈为空");
		}
		return this.minStack.peek();
	}
}

猜你喜欢

转载自blog.csdn.net/itcats_cn/article/details/81433599
今日推荐