题目链接:点击这里

首先要明确的是,栈中存放的是索引。

扫描一遍数组元素,时刻保持从栈底到栈顶索引对应的数组元素是单调递增的。

当一个元素可以压入栈时,意味着此时的栈顶元素就是左边第一个比它小的元素。

当一个元素需要从栈中弹出时,意味着即将压入栈的元素就是右边第一个比它小的元素。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <stack>using namespace std;const int N = 1000010;int a[N], lmin[N], rmin[N];int main()
{int n;scanf("%d", &n);for (int i = 0; i < n; i++){scanf("%d", &a[i]);}memset(lmin, -1, sizeof lmin);memset(rmin, -1, sizeof rmin);stack<int> stk;for (int i = 0; i < n; i++){// 当一个元素需要从栈中弹出时,意味着即将压入栈的元素就是右边第一个比它小的元素while (!stk.empty() && a[i] < a[stk.top()]){rmin[stk.top()] = i;stk.pop();}// 当一个元素可以压入栈时,意味着此时的栈顶元素就是左边第一个比它小的元素if (!stk.empty()){lmin[i] = stk.top();}stk.push(i);}for (int i = 0; i < n; i++){printf("%d %d\n", lmin[i], rmin[i]);}return 0;
}

程序员代码面试指南 CD101 单调栈结构相关推荐

  1. 《程序员代码面试指南第二版》Python实现(个人读书笔记)

    说明 最近在读左神的书---<程序员代码面试指南-IT名企算法与数据结构题目最优解(第二版)>以及看了一些左神的基础.进阶.高频等视频课程,为了记录自己的学习成果,并且方便以后查看,将自己 ...

  2. 程序员代码面试指南第二版 4.猫狗队列

    welcome to my blog 程序员代码面试指南第二版 4.猫狗队列 题目描述 题目描述 实现一种猫狗队列的结构,要求如下: 1. 用户可以调用 add 方法将 cat 或者 dog 放入队列 ...

  3. 算法大神左程云耗尽5年心血分享程序员代码面试指南第2版文档

    前言 学习是一种基础性的能力.然而,"吾生也有涯,而知也无涯.",如果学习不注意方法,则会"以有涯随无涯,殆矣". 学习就像吃饭睡觉一样,是人的一种本能,人人都 ...

  4. 《程序员代码面试指南》第一章 栈和队列 设计一个有getMin功能的栈

    题目 实现一个特殊的栈,在实现栈的基本功能上,再实现返回栈中最小的元素的操作 要求 1. pop.push.getMin操作时间复杂度都是O(1) 2. 设计的栈类型可以使用现成的栈结构 java代码 ...

  5. [读书笔记]《程序员代码面试指南》

    栈和队列: 1.设计一个有getMin功能的栈 题目: 实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作. 要求: 1.pop.push.getMin操作的时间复杂度都是O( ...

  6. 《程序员代码面试指南》第五章 字符串问题 拼接所有字符串产生字典顺序最小的大写字符串...

    题目 拼接所有字符串产生字典顺序最小的大写字符串 java代码 努力中.... 转载于:https://www.cnblogs.com/lizhouwei/p/8955158.html

  7. 《程序员代码面试指南》第二章 链表问题 构造链表和节点的实体

    准备一些链表和节点的实体,方便后面使用 java代码 /*** @Description:构造一个链表实体,方便后续构造链表* @Author: lizhouwei* @CreateDate: 201 ...

  8. 《程序员代码面试指南》第二章 链表问题 在单链表和双链表中删除倒数第K个节点...

    题目 在单链表和双链表中删除倒数第K个节点 java代码 /*** @Description:在单链表和双链表中删除倒数第K个节点* @Author: lizhouwei* @CreateDate: ...

  9. 《程序员代码面试指南》第七章 位运算 在其他数都出现k 次的数组中找到只出现一次的数...

    题目 在其他数都出现k 次的数组中找到只出现一次的数 java 代码 package com.lizhouwei.chapter7;/*** @Description: 在其他数都出现k 次的数组中找 ...

最新文章

  1. ORACLE中通过DBMS_CRYPTO包对表敏感字段进行加密
  2. debugInit.c tomcat启动错误
  3. Chipseq数据库的建立
  4. Freemarker常用技巧
  5. CTO下午茶:张弛有度,动静自如
  6. IDEA使用@Data注解,类调用get、set方法标红的解决办法
  7. 计算机组成原理——第七章
  8. 栈的基本操作(详细)
  9. DBeaver - 一款免费开源的通用数据库工具
  10. 2021-11-25 使用kali自带的SET工具制作钓鱼网站
  11. 张一鸣宣布卸任字节跳动CEO,联合创始人梁汝波将接任
  12. h5在线聊天室(附源码)
  13. 应用程序.f/q(f了个墙)
  14. web安全防火墙介绍
  15. hive3.x异常- return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask
  16. 【Python Intelhex- HEX文件修改器工具】
  17. 问答推广技巧和注意事项问答平台推广的执行方案
  18. 很有用的PHP笔试题系列二
  19. Java注解和反射,苦熬一个月
  20. Android 7.0 开发者版本

热门文章

  1. 跨境电商:shopee虾皮哪个站点比较好,新手应该怎么选择
  2. 东南亚各国电商生态分析及选品参考
  3. 读书笔记(2014-06)
  4. 正则表达式“\\s+“ 匹配任意空白字符
  5. SinoBBD承德德鸣3号楼数据中心获CQC最高等级机房认证
  6. Java通SAS下载sas脚本
  7. 设计一个Roguelike-RPG小游戏
  8. ssm+Vue计算机毕业设计兴澜幼儿园管理系统(程序+LW文档)
  9. RPG游戏-小地图系统
  10. DSP28335学习之旅1-基础知识