剑指offer (20)

题目 : 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。

思路 : 简单题 ,不做赘述

import java.util.Stack;
public class Solution {
	//记得指定泛型,以免后续需要强制类型转换
	Stack<Integer> stackdata = new Stack<>();
	Stack<Integer> minNum = new Stack<>();
	//入栈
	public void push(int node) {
		stackdata.push(node);
		if (minNum.isEmpty()) {
			minNum.push(stackdata.peek());//Java中获取栈顶:peek
		}else if (stackdata.peek() < minNum.peek()) {
			minNum.push(stackdata.peek());
		}else {
			minNum.push(minNum.peek());
		}
	}
	//出栈
	public void pop() {
		stackdata.pop();
		minNum.pop();//同步弹出元素
	}
	//查看栈顶元素
	public int top() {
		return stackdata.peek();
	}
	//查看最小元素
	public int min() {
		return minNum.peek();
	}
}
发布了50 篇原创文章 · 获赞 0 · 访问量 407

猜你喜欢

转载自blog.csdn.net/weixin_46108108/article/details/104199289