【力扣打卡系列】单调栈

news/2024/11/7 3:18:32/

坚持按题型打卡&刷&梳理力扣算法题系列,语言为go,Day20

单调栈
  • 题目描述
    在这里插入图片描述
  • 解题思路
    • 单调栈
      • 后进先出
        • 记录的数据加在最上面
        • 丢掉数据也先从最上面开始
      • 单调性
        • 记录t[i]之前会先把所有小于等于t[i]的数据丢掉,不可能出现上面大下面小的情况
      • 倒着遍历,while遍历,遇到小的就pop,然后把当前值加进去,栈顶即为最近的大于当前i值对应的数,要存的值就是st[-1]-i
      • 优化的地方:每次拿到元素时就应该和栈顶元素进行比较,直到栈空或者扫描结束
      • 思想:及时去掉无用的数据,保证栈内数据的有序
  • 代码参考
go">func dailyTemperatures(temperatures []int) []int {ans := make([]int,len(temperatures))st := []int{}for i,j := range slices.Backward(temperatures){for len(st) > 0 && j>=temperatures[st[len(st)-1]]{  //注意此处是大于等于st = st[:len(st)-1]}if len(st) > 0{ans[i] = st[len(st)-1] - i}st =append(st,i)}return ans
}
  • tips
    • 注意倒序遍历的写法:for i,j := range slices.Backward(temperatures)
    • 将ans定义为一个定长切片:ans := make([]int,len(temperatures))
    • st = st[:len(st)-1]
      • st[:len(st)-1] 是对字符串 st 进行切片操作,它取从字符串开始到长度减去1的位置的子字符串。切片操作在 Go 语言中是通过 字符串[开始索引:结束索引] 来实现的。
      • st = st[:len(st)-1] 将切片操作的结果重新赋值给变量 st,这样 st 就更新为去掉了最后一个字符的新字符串

http://www.ppmy.cn/news/1544944.html

相关文章

如何在社媒平台上使用代理IP来保护帐号安全

社媒平台如Facebook、Twitter、Instagram等,不仅是用户分享生活与信息的重要平台,也是各类网络攻击的目标。利用代理IP可以帮助使用者保护帐号安全,防止个人信息外泄和帐号被盗用的风险。 一、为什么需要使用代理IP保护社媒帐号?…

创建一个基于SSM(Spring, Spring MVC, MyBatis)的教学视频点播系统

开发指南:包括项目结构、数据库设计、配置文件、DAO层、Service层、Controller层和前端页面的示例。 1. 需求分析 明确系统的主要功能需求,例如: 用户注册与登录视频上传与管理视频播放与评论分类管理搜索功能用户权限管理 2. 技术选型 …

033_Structure_Static_In_Matlab求解结构静力学问题两套方法

结构静力学问题 静力学问现在是已经很简单的问题,在材料各向同性的情况下,对于弹性固体材料,很容易通过有限元求解。特别是线弹性问题,方程的矩阵形式可以很容易的写出(准确得说是很容易通过有限元表达)&a…

InsCode 桌面版 IDE 推荐及使用指南

小编的inscode部署项目:割绳子游戏。 引言 随着技术的发展,集成开发环境(IDE)已经成为现代软件开发中不可或缺的工具。InsCode 桌面版 IDE 作为一款由联想公司研发的强大开发工具,不仅提供了丰富的功能和高效的开发体…

推荐一款非常好用的视频编辑软件:Movavi Video Editor Plus

MovaviVideoEditorPlus(视频编辑软件)可以制作令人惊叹的视频,即使您没有任何视频编辑方面的经验! 该款视频编辑程序没有复杂的设置,只需进行直观的拖放控制。在您的电脑上免费使用MovaviVideoEditor亲身体验它的简单易用性与强大功能! 基本简介 您是否…

flink 内存配置(二):设置TaskManager内存

flink 内存配置(一):设置Flink进程内存 flink 内存配置(二):设置TaskManager内存 flink 内存配置(三):设置JobManager内存 flink 内存配置(四)…

从AIGC来看大模型技术的发展和现状_中国aigc开发及运用现状

“ 能使用和会使用大模型并不是一回事 ” AIGC——人工智能生成内容,可以说是大模型技术的看家本领了,以openAI发布的影响全世界的chatGPT来说就属于一个AIGC应用,只不过其主要偏向于语言处理,也就是大模型技术与自然语言领域相结…

json-server的使用(根据json数据一键生成接口)

一.使用目的 在前端开发初期,后端 API 可能还未完成,json-server 可以快速创建模拟的 RESTful API,帮助前端开发者进行开发和测试。 二.安装 npm install json-server //局部安装npm i json-server -g //全局安装 三.使用教程 1.准备一…