[Leedcode][JAVA][第739题][每日温度][暴力][单调栈]

【问题描述】[中等]

根据每日 气温 列表,请重新生成一个列表,对应位置的输出是需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。

【解答思路】

1. 暴力
  • 新建数组
  • 遍历找到比当前位置i大的 坐标相减 没找到 赋值0
    时间复杂度:O(N^2) 空间复杂度:O(1)
  int len = T.length;if(len == 0 || len ==1){return new int[1];}int[] high = new int[len];high[len-1]=0;for(int i=0;i<len-1;i++){for(int j=i+1;j<len;j++){if(T[j]>T[i]){high[i] = j-i;break;}if(j==len-1 &&(T[len-1]<=T[i]) ){high[i]=0;}}}return high;}
public int[] dailyTemperatures(int[] T) {int[] res = new int[T.length];for (int i = 0; i < T.length; i++) {            int j = i + 1;while (j < T.length && T[i] >= T[j]) {                j++;  }res[i] = j < T.length && T[i] < T[j] ? j - i : 0;}return res;}
2. 单调栈

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
时间复杂度:O(N) 空间复杂度:O(N)

public int[] dailyTemperatures(int[] T) {int length = T.length;int[] ans = new int[length];Deque<Integer> stack = new LinkedList<Integer>();for (int i = 0; i < length; i++) {int temperature = T[i];while (!stack.isEmpty() && temperature > T[stack.peek()]) {int prevIndex = stack.pop();ans[prevIndex] = i - prevIndex;}stack.push(i);}return ans;}

【总结】

1.暴力优化 单调栈解决柱状图高低比较问题
2.单调栈

出栈都要做的判断!stack.isEmpty()
在这里插入图片描述

转载参考链接:https://leetcode-cn.com/problems/daily-temperatures/solution/mei-ri-wen-du-by-leetcode-solution

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

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

相关文章

MySQL学习笔记2

目录MySQL函数常用函数聚合函数&#xff08;常用&#xff09;数据库级别MD5加密&#xff08;拓展&#xff09;事务什么是事务索引索引的分类测试索引索引原则权限管理和备份用户管理MySQL备份规范数据库设计三大范式MySQL函数 常用函数 -- 数学运算SELECT ABS(-8) -- 绝对值 …

拓展资源

1&#xff0e;人类的视觉感知系统 眼睛中的光接收器主要是视觉细胞&#xff0c;它包括锥状体和杆状体。中央凹&#xff08;或称中心窝&#xff09;部 分特别薄&#xff0c;这部分没有杆状体&#xff0c;只密集地分布锥状体。它具有辨别光波波长的能力&#xff0c;因此&#xff…

HTML5前端开发学习路线建议,学习前端的必备知识点

Web前端开发工程师是一个很新的职业&#xff0c;是从事Web前端开发工作的工程师。主要进行网站开发&#xff0c;优化&#xff0c;完善的工作。网页制作是Web 1.0时代的产物&#xff0c;那时网站的主要内容都是静态的&#xff0c;用户使用网站的行为也以浏览为主。 一位好的Web前…

[Leedcode][JAVA][第990题][等式方程的可满足性][并查集]

【问题描述】[中等] 给定一个由表示变量之间关系的字符串方程组成的数组&#xff0c;每个字符串方程 equations[i] 的长度为 4&#xff0c;并采用两种不同的形式之一&#xff1a;"ab" 或 "a!b"。在这里&#xff0c;a 和 b 是小写字母&#xff08;不一定不…

图像基本运算概述型

图像基本运算概述型 图像基本运算的概述(Introduction) 图像基本运算的分类 点运算 点运算是指对一幅图像中每个像素点的灰度值进行计算 的方法。 代数运算、逻辑运算 代数运算或逻辑运算是指将两幅或多幅图像通过对应像 素之间的加、减、乘、除运算或逻辑与、或、非运算得 到…

web

1.添加tomcat 新建动态web 在WebContent下新建index.jsp Windows-->preferences-->Server-->Runtimes Environments 稍后tomcat启动成功&#xff0c;但访问tomcat首页报404 解决方法&#xff1a;将server里的项目removeAll&#xff0c;启动server&#xff0c;双击修改…

[剑指offer][JAVA]面试题第[20]题[表示数值的字符串][状态机]

【问题描述】[中等] 请实现一个函数用来判断字符串是否表示数值&#xff08;包括整数和小数&#xff09;。例如&#xff0c;字符串"100"、"5e2"、"-123"、"3.1416"、"0123"都表示数值&#xff0c;但"12e"、"…

点运算

线性点运算 线性点运算的应用 1&#xff09;如果a>1&#xff0c;输出图像的对比度增大&#xff08;灰度扩展&#xff09; 2&#xff09;如果0<a<1,输出图像的对比度减小&#xff08;灰度压缩&#xff09; 3&#xff09;如果a为负值&#xff0c;暗区域将变亮&#xff…

代数运算

代数运算 概念 代数运算是指两幅或多幅输入图像之间进行点对点的加、 减、乘、除运算得到输出图像的过程。如果记输入图像 为A(x,y)和B(x,y)&#xff0c;输出图像为C(x,y)&#xff0c;则有如下四种形 式&#xff1a; 逻辑运算 在进行图像理解与分析领域比较有用。运用这种方法…

[剑指offer][JAVA]面试题第[21]题[调整数组顺序使奇数位于偶数面前][双指针]

【问题描述】[简单] 输入一个整数数组&#xff0c;实现一个函数来调整该数组中数字的顺序&#xff0c;使得所有奇数位于数组的前半部分&#xff0c;所有偶数位于数组的后半部分。示例&#xff1a;输入&#xff1a;nums [1,2,3,4] 输出&#xff1a;[1,3,2,4] 注&#xff1a;[…

几何运算

几何运算 .概念 几何运算就是改变图像中物体对象&#xff08;像素&#xff09;之间的空 间关系。 从变换性质来分&#xff0c;几何变换可以分为图像的位置变换 &#xff08;平移、镜像、旋转&#xff09;、形状变换&#xff08;放大、缩小&#xff09;以 及图像的复等合变换…

vmware创建虚拟机并安装centos7系统

一、vmware创建虚拟机 1、添加一个全新的虚拟机 2、以典型的方式创建虚拟机&#xff0c;然后下一步 3、选择稍后安装操作系统&#xff08;这样我们等下可以自由选择操作系统&#xff09;&#xff0c;然后下一步 4、选择客户及操作系统类型及版本&#xff08;由于我这里将安装的…

MySQL学习笔记3——JDBC

目录JDBC简介数据库驱动JDBC第一个JDBC程序JDBC中各对象详解statement对象包装成工具类SQL注入问题PreparedStatement对象使用IDEA连接数据库JDBC操作事务数据库连接池DBCP需要用到的JAR包DBCP配置文件工具类测试代码C3P0需要用到的JAR包C3P0配置文件工具类测试代码结论JDBC简介…

[Leedcode][JAVA][第15题][三数之和][数组][双指针]

【问题描述】[中等] 给你一个包含 n 个整数的数组 nums&#xff0c;判断 nums 中是否存在三个元素 a&#xff0c;b&#xff0c;c &#xff0c;使得 a b c 0 &#xff1f;请你找出所有满足条件且不重复的三元组。注意&#xff1a;答案中不可以包含重复的三元组。 示例&#…

Yarn的三种资源调度机制

在企业中并不是只有一个人来执行MapReduce程序单独使用Yarn的资源&#xff0c;实际开发中&#xff0c;会有很多人一起使用Yarn这个资源&#xff0c;如果每个人都提交了job&#xff0c;这个时候Yarn就需要进行调度去分配资源给job&#xff0c; 下面三种调度机制&#xff0c;默认…

Java学习笔记9-1——JavaWeb

目录HTTPHTTP请求HTTP响应ServletServlet原理Mapping问题ServletContext获取ServletContext对象ServletContext应用HttpServletResponse下载文件验证码功能实现重定向HttpServletRequestCookie和Session会话CookieSession&#xff08;重点&#xff09;对比ServletContextJSPJSP…

[剑指offer][JAVA]面试题第[22]题[j剑指offer][双指针][快慢指针]

【问题描述】[中等] 输入一个链表&#xff0c;输出该链表中倒数第k个节点。为了符合大多数人的习惯&#xff0c;本题从1开始计数&#xff0c;即链表的尾节点是倒数第1个节点。例如&#xff0c;一个链表有6个节点&#xff0c;从头节点开始&#xff0c;它们的值依次是1、2、3、4…

灰度重采样(Gray Resampling

插值方法 nearest——最邻近点插值。它根据已知两点间的插值 点和这两已知点间位置的远近来进行插值&#xff0c;取较近已知 插值点处的函数值作为未知插值点处的函数值。 linear——线性插值。它将相邻的数据点用直线相连&#xff0c; 按所生成的直线进行插值。 spline——…

空间变换方法

空间变换方法可分为简单变换和控制点变换两种方法&#xff0c; 主要介绍了简单变换 法&#xff0c;这里再补充控制点变换方法。 在许多图像处理的应用中&#xff0c;所需的空间变换都很复杂&#xff0c;不是只通过简单的平移、旋转和 缩放等能解决的&#xff0c;而要通过各种不…