【栈】栈和排序

news/2024/10/6 23:44:41/文章来源:https://www.cnblogs.com/peterzh/p/18449623

https://ac.nowcoder.com/acm/contest/22669/A
考虑巧妙地反向遍历数组,获取一个元素之后元素地最大值,相比正序遍历,减少了遍历次数

#include <bits/stdc++.h>
#include <chrono>
using namespace std;int main() {int n;cin >> n;stack<int> s;vector<int> a(n), b(n);  // 使用 vector 动态数组// 读取输入数组for (int i = 0; i < n; i++) {cin >> a[i];}if (n == 1) {// 特殊处理 n = 1 的情况cout << a[0] << endl;return 0;}// 计算 b 数组,b[i] 保存从 i 到 n-1 之间的最大值b[n-1] = a[n-1];  // 初始化最后一个值for(int i = n-2; i >= 0; i--) {b[i] = max(b[i+1], a[i]);}// 栈的出栈操作,找到字典序最大的出栈序列for(int i = 0; i < n; i++) {s.push(a[i]);  // 按顺序入栈// 出栈条件:栈顶大于剩余数组中的最大值(即 b[i+1])while(!s.empty() && (i == n-1 || s.top() > b[i+1])) {cout << s.top() << " ";  // 输出栈顶元素s.pop();  // 出栈}}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/809272.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pbootcms模板如何调用时间 时间格式大全

PbootCMS列表页和详情页中时间格式化的不同样式及其效果:场景 标签 参数 效果列表页 [list:date] 无参数 2021-12-06 09:12:30列表页 [list:date style=Y-m-d] style=Y-m-d 2021-12-06列表页 [list:date style=Y] style=Y 2021列表页 [list:date style=m-d] style=m-d 12-06列…

宝塔面板修改端口号,无法访问_宝塔修改端口后无法访问

宝塔面板修改端口号后无法访问的解决步骤:确认新端口号:确保已正确记下新的宝塔面板端口号。检查防火墙设置:如果服务器有防火墙(如iptables或ufw),确保新的端口已被添加到防火墙规则中允许外部访问。更新DNS解析或hosts文件:如果原来通过域名直接访问宝塔面板,可能需要…

连接Mysql时出现的“no database selected”错误该如何解决?

遇到“no database selected”错误通常是因为在尝试执行SQL查询时没有明确指定要使用的数据库。以下是解决这个问题的步骤:确认连接时已选择数据库在连接数据库之后,确保已经选择了具体的数据库。例如,在MySQL中,可以使用 USE <database_name>; 语句来选择一个数据库…

打开网页显示数据库连接出错

当打开网页时出现“数据库连接出错”的提示,通常意味着网站后端尝试与数据库建立连接时遇到了问题。这可能是由以下几个原因造成的:数据库服务器未启动:确保数据库服务正在运行。 网络问题:检查数据库服务器和应用服务器之间的网络连接是否正常。 配置错误:确认应用程序中…

Navicat连接数据库遭遇1045错误:如何解决及预防措施

遇到 Navicat 连接 MySQL 数据库时出现 1045 错误(访问被拒绝,用户名或密码错误),可以通过以下几个步骤来解决和预防这个问题: 解决方法确认用户名和密码确认在 Navicat 中输入的用户名和密码是否正确。 可以尝试在 MySQL 命令行中验证用户名和密码是否正确。重置密码如果…

连接数据库1045错误

遇到 MySQL 的 1045 错误,通常表示“访问被拒绝,用户名或密码错误”。以下是解决此问题的步骤: 1. 确认用户名和密码检查用户名和密码是否正确:确认登录数据库时使用的用户名和密码是否正确无误。 如果不确定密码,可以尝试重置密码。2. 重置密码通过命令行重置密码:如果忘…

打不开网站并提示网站还原错误如何处理

当遇到“网站还原错误”导致无法打开网站时,可以尝试以下几种方法来解决问题:清除浏览器缓存和Cookies清除浏览器中的缓存数据和Cookies,有时候这些数据可能会导致加载问题。 在浏览器设置中找到“清除浏览数据”选项进行操作。更换浏览器尝试使用不同的浏览器访问该网站,排…

解决网站404页面问题的有效方法

解决网站404页面问题的有效方法主要包括以下几个步骤: 1. 确认具体URL记录下出现404错误的具体URL。 检查URL是否拼写正确或路径是否合理。2. 检查链接有效性确认该URL对应的资源是否存在。 检查是否有文件被误删除或移动。3. 检查服务器配置查看服务器配置文件(如Apache的.h…

公司官网网站首页的轮播图要怎么更换

更换公司官网首页的轮播图通常涉及以下几个步骤:准备图片确保新图片的尺寸和格式符合网站的要求。 优化图片质量,确保加载速度快。上传图片登录到网站的内容管理系统(CMS)或FTP到服务器上,将新图片上传到相应的文件夹。更新轮播图设置如果使用CMS:进入网站后台管理界面。…

网站logo替换方法:如何替换网站Logo图片(适用任何网站)

替换网站Logo图片的操作取决于网站的技术栈和内容管理系统(CMS)。以下是一些通用步骤,适用于大多数使用HTML/CSS和CMS构建的网站:备份当前网站数据在进行任何更改之前,请确保备份整个网站的数据,包括数据库和文件系统,以防意外丢失重要信息。获取新的Logo图像准备好新的…

网站返回首页发生错误怎么办

当遇到网站返回首页发生错误的情况时,可以按照以下步骤进行排查和解决:检查网络连接:确保当前网络连接正常。 尝试刷新页面或重新启动路由器。清除浏览器缓存:清除浏览器缓存数据,有时旧的缓存可能导致加载问题。尝试其他浏览器:使用不同的浏览器访问该网站,看是否依然存…

网站出现404错误的原因与解决方案

网站出现“404 Not Found”错误通常表示请求的资源在服务器上找不到。这种错误可能是由多种原因引起的。下面是一些常见原因及相应的解决方案: 常见原因URL 输入错误用户输入的 URL 不正确或拼写错误。页面已被删除或移动页面已经被网站管理员删除或移动到了其他位置。重定向问…