在实现栈中原来功能的基础上,获得一个栈中最小值,要求时间复杂度 bigO(1)

思路:

  准备两个栈 stackData stackMin

 1 package my_basic;
 2
 3 import java.util.Stack;
 4
 5 public class GetMinStack {
 6     Stack<Integer> stackData = new Stack<Integer>();
 7     Stack<Integer> stackMin = new Stack<Integer>();
 8
 9     public void push(int pushInt) {
10         if (stackMin.empty()) {
11             stackMin.push(pushInt);
12         }else if (pushInt < stackMin.peek()) {
13             stackMin.push(pushInt);
14         }else {
15             stackMin.push(stackMin.peek());
16         }
17         stackData.push(pushInt);
18     }
19
20     public int pop() {
21         if (stackData.empty()) {
22             throw new RuntimeException("stack is empty!");
23         }
24         stackMin.pop();
25         return stackData.pop();
26     }
27
28     public int getMin() {
29         if (stackData.empty()) {
30             throw new RuntimeException("stack is empty!");
31         }
32         return stackMin.peek();
33     }
34
35     public static void main(String[] args) {
36         GetMinStack s = new GetMinStack();
37         s.push(6);
38         s.push(5);
39         s.push(2);
40
41         int res = s.getMin();
42         System.out.println(res);
43
44         s.push(7);
45
46         res =  s.getMin();
47         System.out.println(res);
48
49         s.pop();
50         s.pop();
51
52         res =  s.getMin();
53         System.out.println(res);
54     }
55
56 }

原文地址:https://www.cnblogs.com/lihuazhu/p/10763506.html

时间: 2024-12-24 04:29:12

在实现栈中原来功能的基础上,获得一个栈中最小值,要求时间复杂度 bigO(1)的相关文章

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

请指教交流! 1 package com.it.hxs.c01; 2 3 import java.util.Stack; 4 5 /* 6 实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作 7 */ 8 public class GetMinStack { 9 10 public static void main(String args[]) { 11 GetMinStack demoStack = new GetMinStack(); 12 demoStack.pus

如何把一个listview中选中的值展示到另外一个 activity中

我正在创建一个简单的app,有一个功能是从第一个listView中取到选中的值展示到第二个activity中,中间是用了Intent传递,但是现在有个问题时我不知道如何才能在第二个activity中. MainActivity.java [java] view plaincopy package com.devleb.listviewdemo; import android.app.ListActivity; import android.content.Intent; import andro

java-57-用两个栈实现队列&amp;&amp;用两个队列实现一个栈

转自:http://bylijinnan.iteye.com/blog/1450125 ———————————————————————————————————————————— Java代码   import java.util.ArrayList; import java.util.List; import java.util.Stack; /* * Q 57 用两个栈实现队列 */ public class QueueImplementByTwoStacks { private Stack<

办公自动化18-将多个excel表中的多个sheet合并到一个excel中的一个sheet

合并前excel中的数据情况: 合并后的excel中数据情况: 附上代码如下: import pandas as pd year = ['2017','2018']#文件夹的命名 sheet_concat = pd.DataFrame() for i in range(len(year)): sheet = pd.read_excel('C:/Users/17360/Desktop/test/'+year[i]+'.xlsx',sheet_name = None,header= 0) #shee

SqlSever基础 insert 给一个数据库中的表中的一个列一次性添加多行数据

1 code 1 --select * from sysdatabases 2 3 --指定数据库 4 use helloworld 5 --查看该数据库中的Teacher表格列有哪几个 6 select * from Teacher 7 -- 向 teacher表格中的ShengHao一次加入两行数据 8 insert into Teacher(ShengHao) 9 values('女娲娘娘'), 10 ('无盐娘娘') 11 2 show

Python3基础 print 查看一个列表中存储的所有内容

镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ 1 code 1 aCollection=range(1,10,1) 2 3 for item in aCollection: 4 print(item) 2 show ------------------------------------------博文的精髓,在技术部分,更在镇场一诗.Pyt

Python3基础 set() 删除一个列表中的重复项

镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.------------------------------------------ code: #创建具有重复元素的列表 list1=list([1,2,3,4,5,5,6,6,6]) #将列表转成集合,重复的元素自动消除 set1=set(list1) #将元素转为列表 list1=list(set1) print(list1) #大合集,你看得懂吗,好看吗? 还是上面

SqlSever基础 MIN 查看一个表中一个列的最小值

镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ 1 table 2 code 1 --创建一个数据库 2 create database helloworld1 3 4 use master 5 drop database helloworld1 6 7 --用helloworld1这个数据库 8 use helloworld1 9 10 --

SqlSever基础 MAX 查看一个表中一个列的最大值

镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ 1 table 2 code 1 --创建一个数据库 2 create database helloworld1 3 4 use master 5 drop database helloworld1 6 7 --用helloworld1这个数据库 8 use helloworld1 9 10 --