Cracking The Coding Interview 3.2
2024-10-12 07:48:14
//How would you design a stack which, in addition to push and pop, also has a function min which returns the minimum element? Push, pop and min should all operate in O(1) time. //使用一个链表来记录最小值的index
#include <iostream>
using namespace std;
#define MAXSIZE 100
#define INIT -888888 class mStack
{
public:
mStack()
{
top = -1;
mi = new min;
mi->data = 0;
mi->nextMin = NULL;
for (int i =0 ;i<100; i++)
{
data[i] = INIT;
}
} int pop()
{
if (top > -1)
{
if (top == mi->data)
{
min *t = mi;
mi = mi->nextMin;
delete t;
} int c= data[top];
data [top] = INIT;
top --;
return c;
}
else
return -2;
} bool push(int e)
{
if (top<MAXSIZE-1)
{
top++;
data[top] = e; if (data[mi->data] > data[top] && data[top]!= INIT)
{
min *t = new min;
t->data = top;
t->nextMin = mi;
mi = t;
}
return true;
}
else
{
return false;
}
} int getmin()
{
return data[mi->data];
} private:
int data[MAXSIZE];
int top; struct min
{
int data;
min *nextMin;
};
min *mi; }; int main()
{
mStack s; for (int i=0;i<10;i++)
{
s.push(10-i);
} s.pop();
s.pop();
cout<<s.getmin()<<endl;
return 0;
}
最新文章
- Leetcode 234 Palindrome Linked List 链表
- JQM[jquery mobile] 实战经验汇总
- Android开发规范——命名 (转)
- 当一回Android Studio 2.0的小白鼠
- Redis高级实践之————Redis短连接性能优化
- ZOJ-3349 Special Subsequence 线段树优化DP
- UNDO表空间设置
- cron服务 ubuntu
- Curl之Post Json
- oracle学习----行级锁的理解
- Linux iostat监测IO状态(转)
- Android使用xml中定义的动画效果
- Lucene 实例教程(二)
- android Graphics(二):路径及文字
- WP自定义字体
- ROS探索总结(十九)——如何配置机器人的导航功能
- Python Web(Django)与SQL SERVER的连接处理
- <;20190103>;别傻了,一些 新的技术注定只适合新人
- SectionList的使用
- hdu3377
热门文章
- spring cloud: zuul(五): prefix访问前缀, ignoredServices粗粒度访问, yml不起作用
- c# zfc
- 雷林鹏分享:C# 循环
- maven---->;配置,指令,插件,使用
- centOS 6.5安装python和nginx
- apiCloud 三方分享,微信好友分享,微信朋友圈分享,QQ分享,微博分享
- php 路途一点启示
- python记录_day09 初识函数
- linux下对数据库操作
- 『TensorFlow』SSD源码学习_其五:TFR数据读取&;数据预处理