AcWing - 单调栈(栈)
发布日期:2021-07-01 00:21:58
浏览次数:3
分类:技术文章
本文共 882 字,大约阅读时间需要 2 分钟。
题目链接:
时/空限制:1s / 64MB题目描述
给定一个长度为N的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出-1。
输入格式
第一行包含整数N,表示数列长度。
第二行包含N个整数,表示整数数列。
输出格式
共一行,包含N个整数,其中第i个数表示第i个数的左边第一个比它小的数,如果不存在则输出-1。
数据范围
1≤N≤10^5
1≤数列中元素≤10^9输入样例
5
3 4 2 7 5
输出样例
-1 3 -1 2 2
解题思路
题意:找出每个数左边第一个小于它的数。
思路:构造单调栈,每次往前找,遇到大于等于它的就出栈,直到找到小于它的数,或者栈为空(就是没有找到),最后并把它进栈,把它这样就构造出了一个单调栈。Accepted Code:
/* * @Author: lzyws739307453 * @Language: C++ */#includeusing namespace std;const int MAXN = 100005;int Stack[MAXN], top = 0;void push(int x) { Stack[++top] = x;}void pop() { top--;}bool empty() { return !top;}int Query() { return Stack[top];}int main() { int n, x; scanf("%d", &n); while (n--) { scanf("%d", &x); while (!empty() && Query() >= x) pop(); if (!empty()) printf("%d ", Query()); else printf("-1 "); push(x); } printf("\n"); return 0;}
转载地址:https://lzyws739307453.blog.csdn.net/article/details/99965678 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月26日 05时02分45秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
计算机网络 —— 网络层 1.
2019-05-01
Android生命周期
2019-05-01
Android 之 ContentProvider 与 ContentResolver
2019-05-01
【接口自动化】
2019-05-01
Spring Boot 安全框架 Shiro 入门
2019-05-01
如何用一句话激怒互联网人?
2019-05-01
用 Python 爬了点你们喜欢的电影
2019-05-01
推荐一位川大零基础转行 Python 的人生勇士
2019-05-01
讲真,做Python一定不要只会一个方向!
2019-05-01
Python解惑之:True与False
2019-05-01
你要的微信小程序终于来了
2019-05-01
有了这些 Chrome 插件,效率提升10倍(建议收藏)
2019-05-01
Python 开发者都会遇到的错误:UnboundLocalError
2019-05-01
只有1%的程序员搞懂过浮点数陷阱
2019-05-01
一名 Google 工程师的大数据处理经验
2019-05-01
命名难,难于上青天
2019-05-01
史上最烂项目:苦撑12年,600多万行代码...
2019-05-01
没钱没公司,怎么做一款付费产品
2019-05-01
查询亿级数据毫秒级返回!Elasticsearch 是如何做到的?
2019-05-01
FastAPI 构建 API 服务,究竟有多快?
2019-05-01