【剑指offer】包括min函数的栈
转载请注明出处:http://blog.csdn.net/ns_code/article/details/26064213
剑指offer上的第21题,之前在Cracking the Coding interview上做过。思路參考这里,这次写了測试函数,在九度OJ上測试通过。
- 题目描写叙述:
-
定义栈的数据结构,请在该类型中实现一个可以得到栈最小元素的min函数。
- 输入:
-
输入可能包括多个測试例子。输入以EOF结束。
对于每一个測试案例,输入的第一行为一个整数n(1<=n<=1000000), n代表将要输入的操作的步骤数。
接下来有n行。每行開始有一个字母Ci。
Ci=’s’时,接下有一个数字k,代表将k压入栈。
Ci=’o’时,弹出栈顶元素。
- 输出:
-
相应每一个測试案例中的每一个操作。
若栈不为空,输出相应的栈中最小元素。否则。输出NULL。
- 例子输入:
-
7
s 3
s 4
s 2
s 1
o
o
s 0
- 例子输出:
-
3
3
2
1
2
3
0
AC代码:
/*
本程序採用数组模拟栈
*/
typedef int ElemType;
#define MAX 100000 //栈的深度
#include<stdio.h>
#include<stdbool.h> int top = -1;
/*
在栈顶索引指针为top时,向栈A中压入数据data
*/
bool push(int *A,ElemType data)
{
if(top>=MAX-1 || top<-1)
return false; A[++top] = data;
return true;
} /*
在栈顶索引指针为top时。出栈
*/
bool pop()
{
if(top<0)
return false; top--;
return true;
} /*
栈顶当前索引指针为top,Min数组最大深度也为MAX。
且Min的有效元素数与栈A中的元素个数同样,
它的相应位置用来保存栈A相应位置到栈底这一部分元素中的最小值
*/
void minAll(int *A,int *Min)
{
if(top>MAX-1)
return ;
Min[0] = A[0];
int i;
for(i=1;i<=top;i++)
{
if(Min[i-1] > A[i])
Min[i] = A[i];
else
Min[i] = Min[i-1];
}
} /*
返回栈顶为top时栈中元素的最小值
*/
int min(int *Min)
{
return Min[top];
} int main()
{ int n;
int A[MAX];
int Min[MAX]; while(scanf("%d",&n) != EOF)
{
int i;
for(i=0;i<n;i++)
{
char ci;
while(getchar() != '\n')
continue;
scanf("%c",&ci);
if(ci == 's')
{
ElemType k;
scanf("%d",&k);
push(A,k);
}
if(ci == 'o')
{
pop();
} minAll(A,Min);
if(top<0)
printf("NULL\n");
else
printf("%d\n",min(Min));
}
}
return 0;
}
/**************************************************************
Problem: 1522
User: mmc_maodun
Language: C
Result: Accepted
Time:60 ms
Memory:1624 kb
****************************************************************/
【剑指offer】包括min函数的栈的更多相关文章
- 剑指Offer 包含min函数的栈
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 思路: 这个题是想得到一个时间复杂度为O(1)的min函数,所以应用一个辅助栈,压的时候,如果A栈的压入比B栈压入 ...
- 剑指offer——包含min函数的栈
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度为O(1)) 该题是自己第一次采用编程的方式来实现Java中栈的功能,故直接借鉴了大牛的代码 import ...
- python剑指offer 包含min函数的栈
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). # -*- coding:utf-8 -*- class Solution: def ...
- 用js刷剑指offer(包含min函数的栈)
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 牛客网链接 js代码 const stack1 = [] const stack2 = ...
- 剑指Offer30——包含min函数的栈
剑指Offer30--包含min函数的栈 1. 题目简述 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数在该栈中,调用min.push及pop的时间复杂度是O(1). 2. 题 ...
- 剑指offer-包含min函数的栈20
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). class Solution: def __init__(self): self.st ...
- 剑指offer--27.包含min函数的栈
时间限制:1秒 空间限制:32768K 热度指数:252822 本题知识点: 栈 算法知识视频讲解 题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为 ...
- 剑指Offer-20.包含min函数的栈(C++/Java)
题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 分析: 因为题目要求得到栈中最小元素的min函数时间复杂度为O(1),这里便不选择遍历栈 ...
- 剑指offer-包含min函数的栈-栈和队列-python
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). # -*- coding:utf-8 -*- class Solution: de ...
- 剑指Offer19 包含min函数的栈
/************************************************************************* > File Name: 19_MinInS ...
随机推荐
- mac终端命令简介
mac终端命令简介(适合刚刚入手mac的新人们) 1.取得root权限 意义相当与windows中的超级管理员权限,甚至还要超出.root权限可以修改系统中的任何文件,不过对普通用户的意义不大,了解即 ...
- C内存管理
一般而言,分配给进程的内存有四个概念上不同的区域,分别为:代码段.数据段.堆和栈,其中数据段又可以细分为初始化为非零的数据和初始化为零的数据.如下图所示: 1.栈区(stack)— 由编译器自动分配释 ...
- Linux下使用clock_gettime给程序计时
http://www.cnblogs.com/daqiwancheng/archive/2010/07/01/1769522.html
- 使用 jQuery.i18n.properties 实现 Web 前端的国际化
jQuery.i18n.properties 简介 在介绍 jQuery.i18n.properties 之前,我们先来看一下什么是国际化.国际化英文单词为:Internationalization, ...
- (转载)NET流操作
http://www.oseye.net/user/kevin/blog/86 概念 数据流(Stream)是对串行传输数据的一种抽象表示,是对输入/输出的一种抽象.数据有来源和目的地,衔接两者的就是 ...
- 【HDOJ】1171 Big Event in HDU
母函数,先要算搞清楚组合数可能的最大值.非常大.N种设备的最大VAL*最大数量. #include <stdio.h> #include <string.h> #define ...
- Windows下的.NET+ Memcached安装
转载请标明出处: http://www.yaosansi.com/ 原文:http://www.yaosansi.com/post/1396.html Memcached官方:http://danga ...
- 如何使一个网络下的2台路由器都可以dhcp上网
设备:2台路由器,网线若干 首先,设置好一个路由器,让它可以拨号上网.网关设置为192.168.1.1,子网掩码为255.255.255.0,dns为61.177.7.1 然后,设置第二台路由器.设置 ...
- apache 实用配置
1.反向代理 反向代理是指想访问目标机器,但无法直接访问,此时,可以通过与目标机器相同网络段的机器做桥接,通过访问桥接机器,访问目标机器,称为反向代理. vi httpd.conf 将代理配置开放: ...
- 2015年10月16日HTML标签表单笔记
textarea只是纯文本编辑框,要想输入各种样式的文本.图片.表格等需要使用“富文本编辑框”.html4暂无富文本编辑框,可使用第三方工具实现此效果. <textarea></te ...