当前位置: 首页 > news >正文

代码随想录冲冲冲 Day47 单调栈Part1

739. 每日温度

初步了解单调栈,根本思想就是如果求的是一个元素右边或左边第一个最大的元素 那么就是递增栈,如果是最小的就是递减栈

首先先放入一个0代表 第一个元素的index

之后开始for loop

当后面的值小于等于这个top时 就要先把index放入st中,说明之前放入的还没找到

第一个最大的,刚刚放入的这些也是要找的

当出现一个值大于top时

result的st.top()也就是之间放入的值的位置就等于差值(题目需要的)

比较完后把比较过的pop走

但是没有办法保证是不是另一个也可以pop所以这里while loop的条件不仅是大小

还要确保是不是为空,如果不为空并且持续满足 就会一直运行

直到不满足条件时,这时候就是st为空了或者是当前值比st里面放着的值更小了

更小了就得先给这个更小的找了 所以st中把更小的这个的index值放入

496. 下一个更大元素 I

这道和上一道基本一样,不一样的是题目中要求放另一个nums的元素到第一个的位置上

所以需要一个map去记录第一个nums每个元素的index

当出现满足while条件时,要判断一下nums2的这个元素是不是在第一个中 

如果不在根本就放不进去,如果在的话根据umap就可以知道改把这个元素放在什么地方

503. 下一个更大元素 II

这道题是一个循环情况我们选择的是forloop i< nums.size()*2

这样像是nums的最后一个元素 就可以得到答案

但是这里的关键步骤还有取%,在取%后,当i 大于了nums.size()后,会自然回到

一开始的地方,就相当于又重新开始比较了


http://www.mrgr.cn/news/28474.html

相关文章:

  • CentOS 8 安装 chronyd 服务
  • Redisson的可重入锁
  • RabbitMQ 在 Linux CentOS 和 Docker 环境下的部署及分布式部署指南
  • 数据结构——快速排序
  • 民锋科技如何通过量化分析提升金融市场投资决策
  • 各种环境换源教程
  • Navicat使用 笔记04
  • R语言统计分析——散点图1(常规图)
  • 使用Qt 搭建简单雷达
  • SpringBoot 消息队列RabbitMQ使用延迟消息插件 接收延迟消息
  • Django学习实战篇五(适合略有基础的新手小白学习)(从0开发项目)
  • 基于Python的自然语言处理系列(10):使用双向LSTM进行文本分类
  • WebGL入门(048):OES_draw_buffers_indexed 简介、使用方法、示例代码
  • 制造、调试OOPS
  • Android 应用安装-提交阶段
  • 基于深度学习的因果关系建模
  • 【数据结构与算法 | 灵神题单 | 自顶向下DFS篇】力扣1022,623
  • windows C++ 并行编程-PPL 中的取消操作(三)
  • C#语言依然是主流的编程语言之一,不容置疑
  • C++ 科目二 智能指针 [weak_ptr] (解决shared_ptr的循环引用问题)
  • Microsoft 365 Copilot: Wave 2
  • HarmonyOS 速记
  • 浮点数计算精度丢失问题及解决方案
  • SpringBoot 消息队列RabbitMQ死信交换机
  • Python 课程13-机器学习
  • 【CMake】使用CMake在Visual Stdudio编译资源文件和多目标编译