思路:

  准备两个栈 stackData stackMin

 package my_basic;

 import java.util.Stack;

 public class GetMinStack {
Stack<Integer> stackData = new Stack<Integer>();
Stack<Integer> stackMin = new Stack<Integer>(); public void push(int pushInt) {
if (stackMin.empty()) {
stackMin.push(pushInt);
}else if (pushInt < stackMin.peek()) {
stackMin.push(pushInt);
}else {
stackMin.push(stackMin.peek());
}
stackData.push(pushInt);
} public int pop() {
if (stackData.empty()) {
throw new RuntimeException("stack is empty!");
}
stackMin.pop();
return stackData.pop();
} public int getMin() {
if (stackData.empty()) {
throw new RuntimeException("stack is empty!");
}
return stackMin.peek();
} public static void main(String[] args) {
GetMinStack s = new GetMinStack();
s.push(6);
s.push(5);
s.push(2); int res = s.getMin();
System.out.println(res); s.push(7); res = s.getMin();
System.out.println(res); s.pop();
s.pop(); res = s.getMin();
System.out.println(res);
} }

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

  1. oracle 两个网络不通的远程数据库如何将一个库中的表数据导入到另一个库中?

      1.情景展示 本地可以直接连接2个不同的远程数据库: 两个数据库由于网络不通,无法建立DBLINK完成数据传输: 将A库中C表的数据插入到B库中C表,如何快速实现? 2.解决方案 通过kettle ...

  2. 如何将RobotFramework中case的执行结果上传到TestLink中。

    公司的需求是: 用RobotFrameworjk框架执行case,用Testlink管理case和测试任务.需要持续统计每个版本的测试结果. 我觉得用Jenkins+Robot也行,Testlink+ ...

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

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  4. SqlSever基础 delete 删除一个表中的所有数据

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

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

    镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...

  6. SQLSERVER如何获取一个数据库中的所有表的名称、一个表中所有字段的名称

    1.查询数据库中的所有数据库名: SELECT Name FROM Master..SysDatabases ORDER BY Name 2.查询某个数据库中所有的表名: SELECT Name FR ...

  7. [转]SQLSERVER如何获取一个数据库中的所有表的名称、一个表中所有字段的名称

    1.查询数据库中的所有数据库名: SELECT Name FROM Master..SysDatabases ORDER BY Name 2.查询某个数据库中所有的表名: SELECT Name FR ...

  8. sql server中将一个表中的部分数据插入到另一个表中

    可以通过存储过程完成,也可以通过在库名上右击“新建查询”执行.语句其实基本相同. 1. 存储过程: CREATE PROCEDURE pro1 as insert into tableB (field ...

  9. oracle将一个表中字段的值赋值到另一个表中字段(批量)

    面积表中数据错误,现将面积表中的sfmj字段的值改为居民信息表中匹配字段的值 update (select s.name name1,s2.name name2 from simple s,simpl ...

随机推荐

  1. 洛谷 - P2261 - 余数求和

    https://www.luogu.org/problemnew/show/P2261 看了一下题解,取模运算可以换成减法来做. $a\%b=a-b*\lfloor\frac{a}{b}\rfloor ...

  2. 洛谷 - P1426 - 小鱼会有危险吗 - 模拟

    https://www.luogu.org/problemnew/show/P1426 题目说的是小鱼进入探测器一秒后就会有危险,所以不应该让小鱼先游,而是先检测探测器. #include<bi ...

  3. Codeforces Round #421 (Div. 2)D - Mister B and PR Shifts(模拟)

    传送门 题意 给出n个数,计算在进行n-1次右移中\(min\sum_{i=1}^nabs(p_i-i)\) 分析 我们设置cnt[p[i]-i]为一个数p[i]与它标准位置(如1的标准位置为1)的左 ...

  4. SDUT2161:Simple Game(NIM博弈+巴什博弈)

    传送门 题意 n堆石子,每次可以取一堆至三堆任意非零石子数,取完者赢,问最后谁能赢 分析 以前我们做过NIM博弈是对一堆进行操作,现在换成了三堆,其实对于n堆都一样一堆的情况 如果最后二进制每位数的1 ...

  5. LIS LCS LCIS (主要过一遍,重在做题)

    只详细讲解LCS和LCIS,别的不讲-做题优先. 菜鸟能力有限写不了题解,可以留评论,我给你找博客. 先得理解最长上升子序列吧,那个HDOJ拦截导弹系列可以做一下,然后用o(n)log(n)的在做一遍 ...

  6. PJzhang:Lucifer1993的struts-scan漏洞全量检测工具

    猫宁!!! 参考链接: https://www.freebuf.com/sectool/149815.html 有关struts 2的漏洞测试工具,很多,不过有的已经很久没更新了,有的只是针对某一个s ...

  7. deque双向队列

    对于双向队列,与队列queue以及vector容器的区别就在于,名字不同,也就是它是双向的,可以从头开始操作,也可以从末尾开始操作. 双向队列的常用方法跟队列queue差不多: 头文件: #inclu ...

  8. python之文件的读写

    读  r   读写模式   r+     如果打开文件时没有指定模式,默认只读,如果使用r或r+,文件不存在时会报错 写  w  写读模式  w+    w模式会清空原有的文件内容 追加 a  追加读 ...

  9. UWP 页面跳转传值

    如果涉及到页面跳转,一般用Frame这个控件来管理不同的页面. <Grid Name="RootGrid"> <Frame Name="RootFram ...

  10. php中三元运算符用法

    代码如下: <?php $handle=fopen("../good/html/1.txt", "r"); while(!feof($handle)) / ...