《程序员代码面试指南》第一章 栈和队列 设计一个有getMin功能的栈

 2023-09-13 阅读 16 评论 0

摘要:题目 实现一个特殊的栈,在实现栈的基本功能上,再实现返回栈中最小的元素的操作 要求 1. pop、push、getMin操作时间复杂度都是O(1) 2. 设计的栈类型可以使用现成的栈结构 java代码 /*** @Description:设计一个有getMin功能的栈* @Author: lizhouwei* &#

题目

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

要求

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

java代码

/*** @Description:设计一个有getMin功能的栈* @Author: lizhouwei* @CreateDate: 2018/4/5 9:54* @Modify by:* @ModifyDate:
*/
public class Chapter1_1 {private Stack<Integer> stackData;//数据栈,压栈的数据private Stack<Integer> stackMin;//辅助栈,从栈顶到栈底 由小到大有序的数据public Chapter1_1(){stackData = new Stack<Integer>(); //在new的时候 初始化stackData内存空间stackMin = new Stack<Integer>(); //在new的时候 初始化stackMin内存空间}//压入栈中public void push(int value){//将数据压入栈中stackData.push(value);//如果辅助栈是空的则直接压入if(stackMin.isEmpty()){stackMin.push(value);}else if(value<stackMin.peek()){//value比栈顶元素小stackMin.push(value);}}//弹栈public int pop(){//如果数据栈中已空,则 返回 -1if(stackData.isEmpty()){return -1;}//数据栈弹出int value =  stackData.pop();if(value ==stackMin.peek()){stackMin.pop();}return value;}//获取最小值public int getMin(){//获取辅助栈顶元素即可return stackMin.peek();}//测试public static void main(String[] args){Chapter1_1 chapter = new Chapter1_1();for(int i=10,j=11;i<20;i=i+2,j=j+10) {chapter.push(j);chapter.push(i);}System.out.println(chapter.getMin());while(!chapter.stackData.isEmpty()){System.out.print(chapter.stackData.pop()+" ");}}
}

转载于:https://www.cnblogs.com/lizhouwei/p/8721194.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/50653.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息