栈 之 寻找下一个较大元素 next greater element
2016-02-24 11:53
316 查看
//栈 之 寻找下一个较大元素 next greater element
#include <iostream>
#include <stdio.h>
#include <stack>
using namespace std;
void findnge(int arr[],int len){
stack<int> s;
s.push(arr[0]);
int i=1;
int top,next;
for(i=1;i<len;i++){
next = arr[i];
top = s.top();
//判断是否找到栈顶元素的nge
while(s.size()>0 && top<next){
printf("\n %d-->%d",top,next);
s.pop();//找到后弹出
if(s.size()>0)//继续判断栈顶
top = s.top();
}
//将下一个元素入栈,以便查找其nge
s.push(next);
}
while(s.size()>0){
top = s.top();
s.pop();
printf("\n %d-->%d",top,-1);
}
}
int main(){
int arr[] = {11,13,10,5,12,21,3};
int n = sizeof(arr)/sizeof(arr[0]);
findnge(arr,n);
return 0;
}
#include <iostream>
#include <stdio.h>
#include <stack>
using namespace std;
void findnge(int arr[],int len){
stack<int> s;
s.push(arr[0]);
int i=1;
int top,next;
for(i=1;i<len;i++){
next = arr[i];
top = s.top();
//判断是否找到栈顶元素的nge
while(s.size()>0 && top<next){
printf("\n %d-->%d",top,next);
s.pop();//找到后弹出
if(s.size()>0)//继续判断栈顶
top = s.top();
}
//将下一个元素入栈,以便查找其nge
s.push(next);
}
while(s.size()>0){
top = s.top();
s.pop();
printf("\n %d-->%d",top,-1);
}
}
int main(){
int arr[] = {11,13,10,5,12,21,3};
int n = sizeof(arr)/sizeof(arr[0]);
findnge(arr,n);
return 0;
}
相关文章推荐
- TCP/IP、Http、Socket的区别
- cookie & session
- Session
- 一个虚拟键盘的简单思路
- Eclipse 安装热部署JRebel
- JSONObject_v3
- JAVA基础整理
- 我来啦
- 循环打印等腰三角形
- mysql系列之一数据表基本操作
- MySQL之——数据表分区技术PARTITION浅析
- Android--获取系统时间的几种方式
- 解决JS浮点数(小数)计算加减乘除的BUG
- 一个fork的面试题
- windows下配置CLion IDE
- Oracle环境变量NLS_LANG
- Maven Settings.xml Reference
- yii2.0 ajax post 提交 400(BadRequest) 解决办法
- 《从零开始学Swift》学习笔记(Day1)——我的第一行Swift代码
- 小米蓝牙耳机使用说明书