| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> Daimayuan Online Judge 出栈序列判断 -> 正文阅读 |
|
[数据结构与算法]Daimayuan Online Judge 出栈序列判断 |
代码源每日一题 现在有一个栈,有nn个元素,分别为1,2,…,n1,2,…,n。我们可以通过push和pop操作,将这nn个元素依次放入栈中,然后从栈中弹出,依次把栈里面的元素写下来得到的序列就是出栈序列。 比如n=3n=3,如果执行 现在给定一个合法的出栈序列,请输出一个合法的由push和pop操作构成的出栈序列。这里要求push操作一定是按1,2,…,n1,2,…,n的顺序。 输入格式 第一行一个整数nn,接下来一行nn个整数,表示出栈序列。 输出格式 输出2n2n行,每行一个 样例输入1
样例输出1
样例输入2
样例输出2
数据规模 对于100%100%的数据,保证1≤n≤1000001≤n≤100000,出栈序列一定是个合法的出栈序列。 中文 思路:这个题是模拟栈的进栈与出栈,可以通过观察样例的大小的变化发现:前一个数小于当前数,那么它就一定是进栈,因为题目要求是从1到n按顺序插入的,而小的数先弹出就说明大的数还没有进。然后是前一个数大于当前数,那么当前数就一定是出栈的,因为之前插入过了,但是这里需要注意弹出栈也是有顺序的,你不能先弹出1,在弹出2,所以弹出的数一定是当前最大的,也就相当于栈顶。数据范围问题:是1e5,最后输出的东西的个数会是2e5,这里用cout即使是取消缓存仍然会非常慢,所以用printf。(我就是在这里被卡了) 完整代码:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 13:29:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |