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

代码随想录 单调栈 Ⅰ

739. 每日温度

给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替

思路:

这种求数组元素左右的第一个大于小于当前元素的类型,适合用单调栈来做。

单调栈的单调属性:单调递增,栈头到栈尾从小到大排列。

单调栈存放元素内容:第几天

遍历时的情况:当前天数的温度大于栈头天数温度时,将栈头元素出栈,当前当前天数与栈头天数的差值就是栈头天数的下一个温度出现所需天数,然后继续比较。当前天数温度小于等于栈头天数温度时,将元素入栈,遍历下一天。

class Solution:def dailyTemperatures(self, temperatures):result = [0 for _ in range(len(temperatures))]stack = [0]for i, v in enumerate(temperatures[1:]):if v <= temperatures[stack[-1]]:stack.append(i + 1)else:while stack and v > temperatures[stack[-1]]:result[stack[-1]] = i + 1 - stack[-1]stack.pop()stack.append(i + 1)return result

496. 下一个更大元素 I

nums1 中数字 x 的 下一个更大元素 是指 x 在 nums2 中对应位置 右侧 的 第一个 比 x 大的元素。

给你两个 没有重复元素 的数组 nums1 和 nums2 ,下标从 0 开始计数,其中nums1 是 nums2 的子集。

对于每个 0 <= i < nums1.length ,找出满足 nums1[i] == nums2[j] 的下标 j ,并且在 nums2 确定 nums2[j] 的 下一个更大元素 。如果不存在下一个更大元素,那么本次查询的答案是 -1 。

返回一个长度为 nums1.length 的数组 ans 作为答案,满足 ans[i] 是如上所述的 下一个更大元素 。

思路:依然是单调栈

class Solution:def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[int]:stack = [nums2[0]]ans = [-1 for _ in range(len(nums1))]for i in nums2[1:]:if i <= stack[-1]:stack.append(i)else:while stack and i > stack[-1]:if stack[-1] in nums1:index = nums1.index(stack[-1])ans[index] = istack.pop()stack.append(i)return ans

 

http://www.lryc.cn/news/184626.html

相关文章:

  • C++返回引用
  • 010:连续跌3天,同时这三天收盘价都在20日均线下,第四天上涨的概率--以京泉华为例
  • MATLAB与Python:优势与挑战
  • CSP-J第二轮试题-2019年-1、2题
  • 深入理解 python 虚拟机:原来虚拟机是这么实现闭包的
  • 【数据结构-哈希表 一】【原地哈希】:缺失的第一个正整数
  • 【C++设计模式之迭代器模式】分析及示例
  • 【代码随想录】LC 27. 移除元素
  • crash工具分析dma设备内存踩踏(一)
  • C#上位机——根据命令发送
  • BEVFormer代码跑通
  • kafka安装
  • Mac上安装Java的JDK多版本管理软件jEnv
  • linux常见命令以及jdk,tomcat环境搭建
  • 将表情存入数据库
  • H桥级联型五电平三相逆变器Simulink仿真模型
  • 后端解决跨域(极速版)
  • 数据结构与算法-前缀树
  • DirectX12_Windows_GameDevelop_3:Direct3D的初始化
  • 基于粒子群优化算法、鲸鱼算法、改进的淘沙骆驼模型算法(PSO/SSA/tGSSA)的微电网优化调度(Matlab代码实现)
  • 数据分析篇-数据认知分析
  • 【力扣-每日一题】714. 买卖股票的最佳时机含手续费
  • 【代码实践】HAT代码Window平台下运行实践记录
  • 机器学习-Pytorch基础
  • 金九银十,刷完这个笔记,17K不能再少了....
  • 精确到区县级街道乡镇行政边界geojson格式矢量数据的获取拼接实现Echarts数据可视化大屏地理坐标信息地图的解决方案
  • 【Python 千题 —— 基础篇】多行输出
  • AdaBoost(上):数据分析 | 数据挖掘 | 十大算法之一
  • Py之pygraphviz:pygraphviz的简介、安装、使用方法之详细攻略
  • acwing算法基础之基础算法--前缀和算法