题意:实现栈的四个基本功能。要求:在get最小元素值时,复杂度O(1)。

思路:链表直接实现。最快竟然还要61ms,醉了。

 1 class MinStack {
 2 public:
 3     MinStack(){
 4         head.next=0;
 5         head.t=0;
 6         m=0x7FFFFFFF;
 7     }
 8     void push(int x) {
 9         node *p=(node *)new(node);
10         p->t=x;
11         p->next=head.next;
12         head.next=p;
13         head.t++;
14         if(x < m)    //要更新
15             m = x;
16     }
17
18     void pop() {
19
20         if(0==head.t)    return ;
21         else if(head.t)
22         {
23             head.t--;
24             if(head.next->t==m) //刚好等于最小值m,要更新最小值
25             {
26                 int sma=0x7FFFFFFF;
27                 node *p=head.next->next;
28                 while( p )
29                 {
30                     if(p->t<sma)
31                         sma=p->t;
32                     p=p->next;
33                 }
34                 m=sma;
35             }
36             head.next=head.next->next;
37         }
38     }
39
40     int top() {
41         if(head.t)
42             return head.next->t;
43         return 0;
44     }
45
46     int getMin() {
47         return m;
48     }
49 private:
50     struct node
51     {
52         int t;
53         node *next;
54     };
55     node head;
56     int m;
57 };

View Code

转载于:https://www.cnblogs.com/xcw0754/p/4483646.html

LeetCode Min Stack 最小值栈相关推荐

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

    [LeetCode]剑指 Offer 30. 包含min函数的栈 文章目录 [LeetCode]剑指 Offer 30. 包含min函数的栈 一.辅助栈 一.辅助栈 解题思路: 普通栈的 push() ...

  2. Python描述 LeetCode 剑指 Offer 30. 包含min函数的栈

    Python描述 LeetCode 剑指 Offer 30. 包含min函数的栈   大家好,我是亓官劼(qí guān jié ),在[亓官劼]公众号.CSDN.GitHub.B站等平台分享一些技术 ...

  3. 《LeetCode力扣练习》剑指 Offer 30. 包含min函数的栈 Java

    <LeetCode力扣练习>剑指 Offer 30. 包含min函数的栈 Java 一.资源 题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调 ...

  4. LeetCode剑指offer算法备战春招-包含min函数的栈

    剑指 Offer 30. 包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1). 示例 ...

  5. min java_LeetCode算法题-Min Stack(Java实现)

    这是悦乐书的第177次更新,第179篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第36题(顺位题号是155).设计一个支持push,pop,top和在恒定时间内检索最小 ...

  6. 设计包含min函数的栈

    2019独角兽企业重金招聘Python工程师标准>>> 题目: 设计一个栈,使得PUSH.POP以及GetMin(获取栈中最小元素)能够在常数时间内完成. 分析: 很刚开始很容易想到 ...

  7. 《剑指offer》-- 构建乘积数组、求1+2+3+...+n、不用加减乘除做加法、包含min函数的栈、用两个栈实现队列

    一.构建乘积数组: 1.题目: 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*. ...

  8. 包含min函数的栈 python_面试题_设计包含 min函数的栈

    设计包含 min函数的栈() 定义栈的数据结构,要求添加一个 minminmin函数,能够得到栈的最小元素. 要求函数 min.push以及 pop 的时间复杂度都是 O(1). #include u ...

  9. [剑指offer]面试题21:包含min函数的栈

    面试题21:包含min函数的栈 题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数.在该栈中,调用min.push及pop的时间复杂度都是O(1). 栈内压入3.4.2.1之 ...

最新文章

  1. 高性能的JavaScript--加载和执行
  2. mybatis 调用 oracle 存储过程 select into 无记录时NO_DATA_FOUND异常处理分析
  3. [导入]IIS无法显示asp页面
  4. 学python可以做什么产品-学了 Python,能用来做什么?实际应用场景有哪些??...
  5. python用户输入一行字符串_python字符串练习
  6. 牛客 - 焦糖布丁(线性基+博弈)
  7. linux plc编程软件,基于Linux平台的可编程控制器软PLC设计
  8. Visual Studio 2013 Xamarin for iOS 环境搭建
  9. linux常用命令和操作笔记
  10. 141.环形链表(力扣leetcode)博主可答疑该问题
  11. DB2安装到卸载一套龙服务
  12. ios模拟器 安装ipa_用iOS模拟器安装App的方法
  13. echaer 地图_Echarts实现中国地图、省份地图及对应数据展示
  14. 计算机主机的输出设备,计算机的输出设备有哪些呢?
  15. remix os显卡linux,Remix OS for PC 详细版的安装教程
  16. maven项目,pom.xml文件变成小虫子(蜘蛛)解决办法
  17. 2022年上半年财神爷最爱照顾的星座
  18. 【算法讲26:特征方程】求齐次线性一阶递推与二阶递推通项公式 | HDU 2021多校一 Pass!
  19. 如果要你向别人推荐电影,你最先想到的是那些呢?
  20. C语言中经典算法——斐波那契数列的几种算法

热门文章

  1. 基于 Android 6.0 的 小米 MIUI 8 已开源
  2. ubuntu远程访问摄像头的设置
  3. 使用mvc时,在视图view中使用强类型视图,在web.config文件中添加命名空间namespace的引用不起作用,解决方法...
  4. Java Servlet(六):HttpServlet实现原理(jdk7+tomcat7+eclipse)
  5. 刚刚做了一个菜单导航变亮的效果,共享一下吧!
  6. 开源贡献 计算_现在贡献开源的3个理由
  7. 趋势交易 高 更高_2020年为开发商带来什么,以及更多的行业趋势
  8. awk 脚本_AWK单行代码和脚本可帮助您对文本文件进行排序
  9. raspberry pi_Raspberry Pi,CNC铣削,WTF,Cypht,HomeBank,Wekan等的使用方法
  10. flv 开源 修复_解决开源项目错误和修复的5个步骤