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

代码随想录算法训练营第五十三天|739. 每日温度 496.下一个更大元素 I 503.下一个更大元素II

LeetCode 739. 每日温度

题目链接:739. 每日温度

踩坑:MD break当成continue了

思路:单调栈问题的核心就是构建并利用单调递增或递减的栈。最近遍历的元素在栈口,将每次遍历到的元素与栈口元素比较是解题过程。具体到本题就是,当天的温度与最近的温度(栈口元素)相比,如果当天温度低则入栈(栈口到栈底递增),如果当天温度高,说明最近一天的解以满足,所以弹出栈口元素,继续比较,直到栈空或较低。

代码:

class Solution {
public:vector<int> dailyTemperatures(vector<int>& temperatures) {stack<int> st;vector<int> result(temperatures.size(), 0);st.push(0);for(int i = 1; i < temperatures.size(); i++){if(temperatures[i] <= temperatures[st.top()]){st.push(i);}else{while(!st.empty() && temperatures[i] > temperatures[st.top()]){result[st.top()] = i - st.top();st.pop();}st.push(i);}}return result;}
};

LeetCode 496.下一个更大元素 I

题目链接:496.下一个更大元素 I

踩坑:他喵的,i - st.top()记成了st.top() - i,虽然本题用不到,但找了半天就是没找出来

思路:与739. 每日温度的单调栈思路一致,只是题目要求不太一样,一是返回下一个更大的值,二是在为结果赋值时需要经过一些映射。

代码:

class Solution {
public:vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {stack<int> st;vector<int> result(nums1.size(), -1);unordered_map<int, int> map;for(int i = 0; i < nums1.size(); i++){map[nums1[i]] = i;}st.push(0);for(int i = 1; i < nums2.size(); i++){if(nums2[i] <= nums2[st.top()]) st.push(i);else{while(!st.empty() && nums2[i] > nums2[st.top()]){if(map.count(nums2[st.top()]) != 0) result[map[nums2[st.top()]]] = nums2[i];st.pop();}st.push(i);}}return result;}
};

LeetCode 503.下一个更大元素II

题目链接:503.下一个更大元素II

踩坑:成环问题想到了用取模,但具体怎么做忘了。第一次去模直接让i = i % size了,导致死循环。

思路:单调栈的思路还是没有变,只是变成了环,取模即可

代码:

class Solution {
public:vector<int> nextGreaterElements(vector<int>& nums) {stack<int> st;vector<int> result(nums.size(), -1);st.push(0);for(int i = 1; i < 2 * nums.size(); i++){int j = i % nums.size();if(nums[j] <= nums[st.top()]) st.push(j);else {while(!st.empty() && nums[j] > nums[st.top()]){result[st.top()] = nums[j];st.pop();}st.push(j);}}return result;}
};

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Linux下的网络通讯
  • 电测量数据交换DLMS_COSEM组件第47部分:基于IP网络的DLMS_COSEM传输层
  • Linux用户-普通用户
  • 树上dp学习总结2
  • SpringMVC中的常用注解
  • stl-algorithm【1】
  • 【错误总结】Ubuntu系统中执行 sudo apt-get update报错
  • 随着人工智能技术的发展,如何确保其决策过程的透明度和可解释性,以避免潜在的不公正和歧视?
  • 入门 PyQt6 看过来(案例)18~ 表格属性
  • 【MATLAB源码】机器视觉与图像识别技术实战示例文档---鱼苗面积预测计数
  • 机器学习模型选择与优化: 打造智能IDS
  • 程序员面试中的“八股文”:敲门砖还是绊脚石?
  • M12电连接器的编码分类及应用领域分析
  • 在Linux上编译软件并且运行的入门示例
  • 同城校园跑腿外卖配送平台源码,这套目前全网还没有人分享过
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • CSS 提示工具(Tooltip)
  • export和import的用法总结
  • Golang-长连接-状态推送
  • gulp 教程
  • JavaScript 基础知识 - 入门篇(一)
  • maven工程打包jar以及java jar命令的classpath使用
  • Python 反序列化安全问题(二)
  • 分布式熔断降级平台aegis
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 力扣(LeetCode)56
  • 如何在GitHub上创建个人博客
  • 使用SAX解析XML
  • 数据科学 第 3 章 11 字符串处理
  • 智能网联汽车信息安全
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #每天一道面试题# 什么是MySQL的回表查询
  • $.ajax()参数及用法
  • (¥1011)-(一千零一拾一元整)输出
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (二)pulsar安装在独立的docker中,python测试
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (强烈推荐)移动端音视频从零到上手(下)
  • (三)Honghu Cloud云架构一定时调度平台
  • (十三)Flask之特殊装饰器详解
  • (转)EOS中账户、钱包和密钥的关系
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .NET 发展历程
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • /dev下添加设备节点的方法步骤(通过device_create)
  • @LoadBalanced 和 @RefreshScope 同时使用,负载均衡失效分析
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [ACP云计算]组件介绍
  • [BJDCTF2020]EzPHP1