热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

实现带min函数的栈结构

本题要求设计一个特殊的栈数据结构,该结构支持常规的栈操作,并额外提供一个min函数,用于返回栈中的最小值,且所有操作的时间复杂度均为O(1)。

问题描述

设计一个支持标准栈操作(如push、pop和top)的栈类,同时需要实现一个min方法,该方法能在常数时间内返回当前栈中的最小元素。

解决方案

为了实现在常数时间内获取栈中的最小值,我们可以使用两个栈来存储数据:一个用于存储所有入栈的元素,另一个用于维护一个递减的最小值序列。当新元素入栈时,如果它小于或等于辅助栈的栈顶元素,则将它也压入辅助栈;否则,将辅助栈的栈顶元素再次压入辅助栈,以保持辅助栈的递减特性。这样,在执行出栈操作时,主栈和辅助栈同时弹出元素,确保了辅助栈的栈顶始终为主栈中的最小值。

import java.util.Stack;
public class MinStack {
private Stack dataStack = new Stack<>();
private Stack minStack = new Stack<>();

public void push(int value) {
dataStack.push(value);
if (minStack.isEmpty() || value <= minStack.peek()) {
minStack.push(value);
} else {
minStack.push(minStack.peek());
}
}

public void pop() {
if (!dataStack.isEmpty()) {
dataStack.pop();
minStack.pop();
}
}

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

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

推荐阅读
author-avatar
兴桂秀寧29
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有