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

代码随想录 (programmercarl.com)

739. 每日温度

栈里面存放的是元素的下标,确保栈里面的下标对应的元素是单调递增的。

如果栈里面存放的是元素的话,就没有办法定位到下标值,无法计算出距离,所以直接就存入下标。

class Solution {public int[] dailyTemperatures(int[] temperatures) {int len = temperatures.length;int[] res = new int[len];//包含将结果先全部初始化为0Deque<Integer> stack = new LinkedList<>();stack.push(0);//此时栈顶元素就是temperatures[0]所对应的下标!栈里面存放的是下标for (int i = 1; i < len; i++) {if (temperatures[i] <= temperatures[stack.peek()]){stack.push(i);}else{while (!stack.isEmpty() && temperatures[i] > temperatures[stack.peek()]){res[stack.peek()] = i - stack.peek();stack.pop();}stack.push(i);//全部比较完之后,确定没有比该元素还要小的元素之后才能压入栈}}return res;}
}

注意:stack.push(i);的位置在while循环之外,遍历到的元素只要大于栈顶元素就不能被压入栈,而应该继续改变res的值,直到遍历到的元素小于栈顶元素之后才能够被压入栈。

496.下一个更大元素I  

递增单调栈,遍历nums2,寻找比遍历的元素大的元素,再去判断nums1中是否有该元素,如果有,就需要通过哈希映射找到对应的元素下标,如果没有则需要弹出该元素,继续遍历。

add和push只是最后返回值不一样,add返回布尔类型,而push则返回插入元素的类型。

class Solution {public int[] nextGreaterElement(int[] nums1, int[] nums2) {Stack<Integer> temp = new Stack<>();temp.push(0);//存入nums2的下标0
//        temp.add(0);//add也可以int[] res = new int[nums1.length];Arrays.fill(res,-1);HashMap<Integer, Integer> hashMap = new HashMap<>();for (int i = 0 ; i < nums1.length ; i++){//构建哈希映射K-V,其中key是nums1[i],value是ihashMap.put(nums1[i],i);}for (int i = 1; i < nums2.length; i++) {if (nums2[i] <= nums2[temp.peek()]){temp.push(i);}else {while (!temp.isEmpty() && nums2[i] > nums2[temp.peek()]){if (hashMap.containsKey(nums2[temp.peek()])){int index = hashMap.get(nums2[temp.peek()]);res[index] = nums2[i];//此时的结果应当是遍历到的nums2中的元素}temp.pop();//在判断条件外面,因为如果不满足上面的if判断,也要将该元素弹出栈}temp.push(i);//全部比较完之后,确定没有比该元素还要小的元素之后才能压入栈,理由同上739}}return res;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/323740.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IIS回收应用

前言 作为Windows的一个可选包,Internet Information Services (IIS)管理器经常被用于Windows Server系列服务器内的Web管理。IIS采用应用程序池方式管理Web的工作进程,同时采用了页面输出缓存的缓存加载机制。当网络出现瞬间访问异常时,部分IIS管理的web页面可能会发生长…

arcpy点要素生成经纬度字段脚本

说明 本脚本是用来简化操作的&#xff0c;正常情况下要生成经纬度字段&#xff0c;需要添加字段→填写字段名→写字段类型→字段计算器→计算几何。。。 而且经纬度都需要&#xff0c;要循环两遍。 本脚本就是为了简化以上操作的&#xff0c;安装后&#xff0c;打开脚本直接输…

助力各设备厂家矿鸿方案快速落地-触觉智能多款产品通过矿鸿认证

近日&#xff0c;触觉智能自主研发的多款产品&#xff1a;矿鸿核心板、本安矿鸿工业主板、矿鸿标准开发板、RK3568矿鸿控制器、本安矿鸿控制器、7寸矿鸿工控屏、10.4寸矿鸿工控屏、12.1寸矿鸿工控屏、15.6寸组态屏&#xff0c;10.1寸组态屏灯&#xff0c;通过矿鸿资质认证。 触…

FAST-LIO2:论文和算法解析

文章目录 摘要一、简介二、相关工作2.1雷达惯导里程计2.2 建图过程中的动态数据结构 三、系统架构四、状态估计A. 卡尔曼模型1.状态转换模型2.测量模型 B.迭代卡尔曼滤波1. 预测过程2. 残差计算3.迭代更新 五、建图A.地图管理B.树的结构与创建1.数据结构2.ikd树的创建 C.地图的…

【C++期末编程题题库】代码+详解18道

适合期末复习c看&#xff0c;或者刚入门c的小白看&#xff0c;有的题会补充知识点&#xff0c;期末复习题的代码一般比较简单&#xff0c;所以语法上没那么严谨。本文所有题目要求全在代码块的最上面。 目录 1、设计复数类 2、设计Computer类 3、实现相加的函数模板 4、圆类…

【愚公系列】2023年12月 HarmonyOS应用开发者基础认证(完美答案)

&#x1f3c6; 作者简介&#xff0c;愚公搬代码 &#x1f3c6;《头衔》&#xff1a;华为云特约编辑&#xff0c;华为云云享专家&#xff0c;华为开发者专家&#xff0c;华为产品云测专家&#xff0c;CSDN博客专家&#xff0c;CSDN商业化专家&#xff0c;阿里云专家博主&#xf…

龙芯loongarch64服务器编译安装clang

前言 Clang 是一款开源的 C、C++、Objective-C 和 Objective-C++ 编程语言的编译器前端。它是 LLVM 编译器基础设施项目的一部分,具有优秀的性能、可扩展性和模块化设计。 Clang 提供了一系列主要功能,包括但不限于: 作为编译器前端,负责将源代码转换为中间表示形式(IR)…

VR与数字孪生:共同构筑未来的虚拟世界

随着科技的不断发展&#xff0c;数字孪生和VR已经成为当今热门的科技话题。作为山海鲸可视化软件的开发者&#xff0c;我们对这两者都有深入的了解。在此&#xff0c;我们将详细探讨数字孪生与VR的区别和联系。 首先&#xff0c;数字孪生&#xff08;Digital Twin&#xff09;…

Midas NFX 各版本安装指南

Midas NFX下载链接 https://pan.baidu.com/s/1cOifluBBobRgJZHZxuODvw?pwd0531 1.鼠标右击【Midas NFX 2023(64bit)】压缩包&#xff08;win11及以上系统需先点击“显示更多选项”&#xff09;【解压到 Midas NFX 2023(64bit)】。 2.打开解压后的文件夹&#xff0c;双击打开…

已知输入图像大小为n、卷积核大小为f、卷积步长s,填充大小为p,求解输出图像大小。

问题描述&#xff1a;已知输入图像大小为n、卷积核大小为f、卷积步长s&#xff0c;填充大小为p&#xff0c;求解输出图像大小。 问题解答&#xff1a; 输出图像的大小可以使用以下的计算公式确定&#xff1a; 为了举例说明&#xff0c;假设有以下参数&#xff1a; 输入图像大…

YOLOv8模型yaml结构图理解(逐层分析)

前言 YOLO-V8&#xff08;官网地址&#xff09;&#xff1a;https://github.com/ultralytics/ultralytics 一、yolov8配置yaml文件 YOLOv8的配置文件定义了模型的关键参数和结构&#xff0c;包括类别数、模型尺寸、骨架&#xff08;backbone&#xff09;和头部&#xff08;hea…

影响机器人行业爆炸式发展的原因有哪些(OpenPilot)

机器人是现在和未来最有发展前景的行业&#xff0c;这一点是毋庸置疑的。 先看一段21年的视频&#xff1a; 外置式L2级别自动驾驶辅助套件 Openpilot 深度体验分析 火热 作为热门专业的从业人员&#xff0c;能够感受到行业的关注热度和实际热度之间的差异。 原因 有很多&am…