题目

链接:https://ac.nowcoder.com/acm/contest/26886/A
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld

题目描述

给你一个1->n的排列和一个栈,入栈顺序给定

你要在不打乱入栈顺序的情况下,对数组进行从大到小排序

当无法完全排序时,请输出字典序最大的出栈序列

输入描述:

第一行一个数n
第二行n个数,表示入栈的顺序,用空格隔开,结尾无空格

输出描述:

输出一行n个数表示答案,用空格隔开,结尾无空格

示例1

输入

5
2 1 5 3 4

输出

5 4 3 1 2

说明

2入栈;1入栈;5入栈;5出栈;3入栈;4入栈;4出栈;3出栈;1出栈;2出栈

题解

思路:一步一步压栈, 压栈在之后进行while(条件)判断[tips:因为可能top出栈后,新的还是比后面的大],top是不是比后面所有没有入栈的大,如果大,则出栈,否则继续压栈.

注意事项:在使用栈的时候一定要先进行empty判断然后再使用top进行访问,否则会造成越界访问.

后面的最大值可以使用另一个数组进行维护

由于在本题目中都是正整数,所以0可以是求最大值的初始条件.
当压完最后一个的时候,最大值可以视为零,则在while中会依次进行出栈.

代码

#include <iostream>
#include <cstdio>
#include <stack>
#define N 6000000
using namespace std;
int s[N];
int smax[N]; stack<int>a;
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> s[i];
}
for (int i = n - 1; i >= 0; i--)
{
smax[i] = max(s[i], smax[i + 1]);
}
for (int i = 0; i < n; i++)
{
a.push(s[i]);
while (!a.empty() && a.top() > smax[i + 1])
{
cout << a.top() << ' ';
a.pop();
}
}
/* while (!a.empty() )
{
cout << a.top() << ' ';
a.pop();
}
*/
return 0;
}

栈和排序_via牛客网的更多相关文章

  1. 小A的柱状图_via牛客网

    题目 链接:https://ac.nowcoder.com/acm/contest/28537/Q 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语 ...

  2. 简单的数据结构_via牛客网

    题面 链接:https://ac.nowcoder.com/acm/contest/28537/K 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语 ...

  3. 牛牛与后缀表达式_via牛客网

    题目 链接:https://ac.nowcoder.com/acm/contest/28537/B 来源:牛客网 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 262144K,其他语 ...

  4. 好串_via牛客网

    题目 链接:https://ac.nowcoder.com/acm/contest/28537/C 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言 ...

  5. 小C的记事本_via牛客网

    题目 链接:https://ac.nowcoder.com/acm/contest/28537/G 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 131072K,其他语 ...

  6. 吐泡泡_via牛客网

    题目 链接:https://ac.nowcoder.com/acm/contest/28537/E 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言 ...

  7. 双栈排序 牛客网 程序员面试金典 C++ Python

    双栈排序 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中. ...

  8. 牛客网——B-栈和排序

    链接:https://www.nowcoder.com/acm/contest/58/B来源:牛客网 题目描述 给你一个1->n的排列和一个栈,入栈顺序给定 你要在不打乱入栈顺序的情况下,对数组 ...

  9. 数字在排序数组中出现的次数 牛客网 剑指Offer

    数字在排序数组中出现的次数 牛客网 剑指Offer 题目描述 统计一个数字在排序数组中出现的次数. class Solution: def GetNumberOfK(self, data, k): i ...

随机推荐

  1. Spring Ioc源码分析系列--前言

    Spring Ioc源码分析系列--前言 为什么要写这个系列文章 首先这是我个人很久之前的一个计划,拖了很久没有实施,现在算是填坑了.其次,作为一个Java开发者,Spring是绕不开的课题.在Spr ...

  2. linux篇-xshell连接突然报Connection closed by foreign host.

    1问题描述报错 Connection closed by foreign host. Disconnected from remote host(yaoGS) at 155513. 2登入虚拟机 在l ...

  3. Django序列化组件与数据批量操作与简单使用Forms组件

    目录 SweetAlert前端插件 Django自带的序列化组件 批量数据操作 分页器与推导流程 Forms组件之创建 Forms组件之数据校验 Forms组件之渲染标签 Forms组件之信息展示 S ...

  4. 使用 awk 命令统计文本

    2022-04-19 11:25:15.008,b4d13bfca8fe4b93a85e65a88520d945,LogScheduler#printLog,10ms,Y,xxxxxxxx 2022- ...

  5. 如何让 Windows 把 TypeScript 文件当作文本文件

    TL;DR 修改注册表项 HKEY_CLASSES_ROOT\.ts 为 HKEY_CLASSES_ROOT\.txt 的值 起因 Windows10 总把 TypeScript 文件自动当成视频,放 ...

  6. 【Unity Shader学习笔记】Unity光照基础-高光反射

    1.原理 1.1.Phong模型 计算高光反射需要表面法线.视角方向.光源方向.反射方向等. 在这四个矢量中,我们实际上只需要知道其中3个矢量即可,而第4个矢量(反射方向r)可以通过其他信息计算得到: ...

  7. autohotkey(AHK)实现箭头映射

    起因 在主力本上使用了AHK实现alt ijkl的箭头映射,在另一个本子上怎么都不习惯,于是网上找教程,找了半天... 因为大家习惯了快捷键都不一样,为了避免以后浪费时间,因此开此文记录. 操作 ht ...

  8. 使用JavaCV实现读取视频信息及自动截取封面图

    概述 最近在对之前写的一个 Spring Boot 的视频网站项目做功能完善,需要利用 FFmpeg 实现读取视频信息和自动截图的功能,查阅资料后发现网上这部分的内容非常少,于是就有了这篇文章. 视频 ...

  9. 深入C++05:运算符重载

    运算符重载 1.复数类 运算符重载目的:使对象运算表现得和编译器内置类型一样: 复数类例子 #include<iostream> using namespace std; class CC ...

  10. ICDAR2013

    参考:https://www.cnblogs.com/dmyu/p/6483357.html以及博主相关文章等.