【剑指Offer】No.30 包含min函数的栈

编程入门 行业动态 更新时间:2024-10-09 05:22:52

【<a href=https://www.elefans.com/category/jswz/34/1769671.html style=剑指Offer】No.30 包含min函数的栈"/>

【剑指Offer】No.30 包含min函数的栈

题目描述

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

解题思路

画抽象为具体。以具体的例子进行分析,会出现什么问题,我们应该如何处理?

import java.util.Stack;public class Solution {// stack1是我们的数据栈,保留数据入栈的顺序// stack2是我们的辅助栈,用来存储每一个元素入栈时与当前栈中最小值的比较之后得到的最小值// stack1与stack2的长度一致,同时存储同时删除private Stack<Integer> stack1 = new Stack<Integer>();private Stack<Integer> stack2 = new Stack<Integer>();public void push(int node) {stack1.push(node);// stack2为空则直接存储当前元素最为最小值if (stack2.isEmpty()) {stack2.push(node);} else {// stack2非空,则判断当前元素与栈顶元素大小,存储较小元素即可if (stack2.peek() <= node) {stack2.push(stack2.peek());} else {stack2.push(node);}}}public void pop() {// 同时pop栈顶元素,保持栈长度时刻一致stack1.pop();stack2.pop();}public int top() { // 获取数据栈栈顶元素return stack1.peek();}public int min() { // 获取辅助栈栈顶元素return stack2.peek();}
}

 

更多推荐

【剑指Offer】No.30 包含min函数的栈

本文发布于:2024-02-27 18:21:24,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1765597.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:剑指   函数   Offer   min

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!