下一个较大值
来源:互联网 发布:网络教育不考学位证 编辑:程序博客网 时间:2024/04/30 10:20
数据结构实验之栈六:下一较大值(二)
Time Limit: 150MS Memory limit: 8000K
题目描述
对于包含n(1<=n<=100000)个整数的序列,对于序列中的每一元素,在序列中查找其位置之后第一个大于它的值,如果找到,输出所找到的值,否则,输出-1。
输入
输入有多组,第一行输入t(1<=t<=10),表示输入的组数;
以后是 t 组输入:每组先输入n,表示本组序列的元素个数,之后依次输入本组的n个元素。
输出
输出有多组,每组之间输出一个空行(最后一组之后没有);
每组输出按照本序列元素的顺序,依次逐行输出当前元素及其查找结果,两者之间以-->间隔。
#include <stdio.h>#include <stdlib.h>#define max 1200000#define rmax 1200000struct jian{ int num; int id; int next;}a[1200000];typedef struct{ struct jian *top; struct jian *end; int list;}sq;int init(sq &s){ s.end=(struct jian *)malloc(max*sizeof(struct jian)); if(!s.end) return -1; s.top=s.end; s.list=max; return 0;}int empty(sq &s){ if(s.top==s.end) return 1; else return 0;}void creat(sq &s,struct jian b){ *s.top=b; s.top++;}struct jian choose(sq &s){ return *(s.top-1);}void change(sq &s){ s.top--;}int main(){ int t,n,i,j; sq s; scanf("%d",&t); while(t--) { init(s); scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&a[i].num); a[i].id=i; a[i].next=-1; if(empty(s)) creat(s,a[i]); else { while(!empty(s)) { struct jian b; b=choose(s); if(b.num<a[i].num) { a[b.id].next=a[i].num; change(s); } else break; } creat(s,a[i]); } } for(i=1;i<=n;i++) { printf("%d-->%d\n",a[i].num,a[i].next); } printf("\n"); }}
示例输入
24 12 20 15 185 20 15 25 30 6
示例输出
12-->20
20-->-1
15-->18
18-->-1
20-->25
15-->25
25-->30
30-->-1
6-->-1
提示
本题数据量大、限时要求高,须借助栈来完成。
来源
示例程序
0 0
- 下一个较大值
- 下一个较大排列组合
- 下一个较大元素
- 下一个较大元素II
- 下一个较大元素
- 下一个较大元素
- 下一个较大元素
- 下一个较大元素
- 下一个较大值 栈和队列(优化防止TLE)
- 寻找下一个较大元素 --- 利用栈
- 找出较大的下一个数字组合 Next Permutation
- [程序员面试金典]1002.下一个较大元素
- 栈 之 寻找下一个较大元素 next greater element
- 程序员面试金典——下一个较大元素
- 找出较大值
- 496. Next Greater Element I(寻找下一个较大的数)
- 金典——下一个较大的元素2(需优化)
- 《Cracking the Coding Interview程序员面试金典》----下一个较大元素(所有比他大中最小的)
- android注册 登录 修改帐号密码 添加资料 给新注册用户充值DEMO
- flume-知识点
- Spring框架——AOP前置通知
- HDU 2647 Reward
- Java--FilenameFilter文件过滤器
- 下一个较大值
- iOS开发笔记>> 怎么解决cell缓存池满的问题
- java 中的 成员变量、局部变量、静态变量、类变量、非静态变量、实例变量、向前引用、非法向前引用、静态代码块、非静态代码块 执行时机
- PC机如何利用total control控制DragonBoard 410c
- C语言字符串
- ubuntu16.04命令行模式黑屏解决办法
- php连接Access数据库的三种方法
- HDU 1285 确定比赛名次
- android4.4+实现MD状态栏并全屏显示内容