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

LeetCode739每日温度

题目描述

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

解析

  每次往栈中添加下标,如果遇到比栈顶元素对应的温度高,说明找到了栈顶的温度,出栈并入栈当前温度。

public int[] dailyTemperatures(int[] temperatures) {int[] res = new int[temperatures.length];Deque<Integer> s = new LinkedList<>();s.push(0);for(int i = 1; i < temperatures.length; i++) {while (!s.isEmpty() && temperatures[s.peek()] < temperatures[i]) {int pre = s.pop();res[pre] = i - pre;}s.push(i);}return res;}

在这里插入图片描述
  时间消耗最少的方式是动态规划,从后往前遍历:

  • 如果第 i+1 天的温度大于第 i 天的温度,那么 dp[i] = 1。
  • 如果第 i+1 天的温度不大于第 i 天的温度,那么查看 dp[i+1]:
    • 如果 dp[i+1] 是非零的,说明从第 i+1 天开始,有一个已知的更热的天在 i+1 + dp[i+1]。接下来检查那一天的温度是否高于第 i 天:
      • 如果是,dp[i] 就是 1 + dp[i+1]。
      • 如果不是,继续向后查看,直到找到更热的一天或者查看到数组的尽头。
public int[] dailyTemperatures(int[] temperatures) {int n=temperatures.length;int[] dp=new int[n];for(int i=n-2;i>=0;i--){int j=i+1;while(j<n && temperatures[j]<=temperatures[i] && dp[j]!=0){j+=dp[j];}if(j<n &&temperatures[j]>temperatures[i]){dp[i]=j-i;}}return dp;}

在这里插入图片描述
  虽然从此题提交的结果来看,动态规划耗时更短,但是使用栈,最好最坏的复杂度都是O(n),而使用动态规划最好为O(n),最坏是O(n^2),因此实际开发还是建议使用栈的方式来解决问题。

相关文章:

LeetCode739每日温度

题目描述 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 解析 每次往栈中…...

【Qt】Qt中的几种Timer

1. QObject::startTimer int QObject::startTimer(int interval, Qt::TimerType timerType Qt::CoarseTimer) int QObject::startTimer(std::chrono::milliseconds time, Qt::TimerType timerType Qt::CoarseTimer)每次时间到了会调用虚函数timerEvent() 2. QTimer 3. QBa…...

Excel 多列组合内容循环展开

某表格 A 列是编号&#xff0c;其他列是用逗号分隔的意义不同的分类列 ABCDEFG1Assembly#ProductTypeUnit ConfigNominal CapacitySupply VoltageGenerationCase Construction23H1012290001CMD,P24,36FAA,B33H1012290002CMD,P48,60FA,BA,B43H1012290003CMD,P24,36B,C,D,EAA,B …...

Vue2+Element-ui实现el-table表格自适应高度

效果图 新建指令 Vue.directive(height, {inserted(el, _binding, vnode) {const paginationRef vnode.context.$refs.paginationRefconst calculateHeight () > {const windowHeight window.innerHeightconst topOffset el.getBoundingClientRect().topconst otherEle…...

【人工智能】开发AI可能获刑?加州1047草案详解

引言 随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;其应用领域不断扩展&#xff0c;但同时也引发了诸多争议和监管问题。近期&#xff0c;加州参议院以32比1的压倒性投票通过了1047号草案&#xff0c;又称《前沿人工智能模型安全可靠创新法案》。这一草案…...

机器学习二分类数据集预处理全流程实战讲解

本文概述 本文对weatherAUS数据集进行缺失值分析并剔除高缺失特征&#xff0c;合理填补剩余缺失值&#xff0c;利用相关性筛选关键特征&#xff0c;采用多种机器学习模型&#xff08;如逻辑回归、随机森林等&#xff09;在80%训练集上训练&#xff0c;并在20%测试集上预测明日降…...

大模型应用:LangChain-Golang核心模块使用

1.简介 LangChain是一个开源的框架&#xff0c;它提供了构建基于大模型的AI应用所需的模块和工具。它可以帮助开发者轻松地与大型语言模型(LLM)集成&#xff0c;实现文本生成、问答、翻译、对话等任务。LangChain的出现大大降低了AI应用开发的门槛&#xff0c;使得任何人都可以…...

【Tkinter界面】Canvas 图形绘制(03/5)

文章目录 一、说明二、画布和画布对象2.1 画布坐标系2.2 鼠标点中画布位置2.3 画布对象显示的顺序2.4 指定画布对象 三、你应该知道的画布对象操作3.1 什么是Tag3.2 操作Tag的函数 https://www.cnblogs.com/rainbow-tan/p/14852553.html 一、说明 Canvas&#xff08;画布&…...

【CS.PL】Lua 编程之道: 基础语法和数据类型 - 进度16%

2 初级阶段 —— 基础语法和数据类型 文章目录 2 初级阶段 —— 基础语法和数据类型2.0 关键字(keywords) &#x1f525;2.1 注释与标识符2.1.1 注释2.1.2 标识符 2.2 变量与赋值2.2.1 所有变量默认是全局变量 ≠ local, 有一个例外2.2.2 local变量是局部变量, 以end作为边界2.…...

centos7 xtrabackup mysql 基本测试(3)---虚拟机环境 安装mysql

centos7 xtrabackup mysql 基本测试&#xff08;3&#xff09;—虚拟机环境 安装mysql centos7 安装 mysql5.7 可以在运行安装程序之前导入密钥&#xff1a; sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022第一步、下载MySQL 安装包&#xff1a; sudo w…...

Java Native Interface 使用指南

我们知道Java本身的实现&#xff0c;很大一部分是用C写的。实际上&#xff0c;Java也允许我们和原生平台的代码进行交互。 Java定义了一个接口规范&#xff0c;就叫做Java Native Interface&#xff0c;通过这个接口规范&#xff0c;我们就可以让Java代码运行原生平台的代码。…...

代码随想录算法训练营第三十九天 | 62.不同路径、63. 不同路径 II、343. 整数拆分、96.不同的二叉搜索树

62.不同路径 题目链接&#xff1a;https://leetcode.cn/problems/unique-paths/ 文档讲解&#xff1a;https://programmercarl.com/0062.%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE… 视频讲解&#xff1a;https://www.bilibili.com/video/BV1ve4y1x7Eu/ 思路 确定dp数组以及下标的含…...

C/C++函数指针、C#委托是什么?

函数指针 #include<stdio.h>//声明函数指针 typedef int(*Calc)(int a, int b); int Add(int a, int b) {return a b; } int Sub(int a, int b) {return a - b; }int main() {Calc funcPoint1 &Add;Calc funcPoint2 &Sub;int x 120;int y 140;int z 0;z …...

红队攻防渗透技术实战流程:组件安全:JacksonFastJsonXStream

红队攻防渗透实战 1. 组件安全1.1 J2EE-组件Jackson-本地demo&CVE1.1.1 代码执行 (CVE-2020-8840)1.1.2 代码执行(CVE-2020-35728)1.2 J2EE-组件FastJson-本地demo&CVE1.2.1 FastJson <= 1.2.241.2.2 FastJson <= 1.2.471.2.3 FastJson <= 1.2.801.3 J2EE-组…...

Perl 语言学习进阶

一、如何深入 要深入学习Perl语言的库和框架&#xff0c;可以按照以下步骤进行&#xff1a; 了解Perl的核心模块&#xff1a;Perl有许多核心模块&#xff0c;它们提供了许多常用的功能。了解这些模块的功能和用法是深入学习Perl的第一步。一些常用的核心模块包括&#xff1a;S…...

LangGraph实战:从零分阶打造人工智能航空客服助手

❝ 通过本指南&#xff0c;你将学习构建一个专为航空公司设计的客服助手&#xff0c;它将协助用户查询旅行信息并规划行程。在此过程中&#xff0c;你将掌握如何利用LangGraph的中断机制、检查点技术以及更为复杂的状态管理功能&#xff0c;来优化你的助手工具&#xff0c;同时…...

R可视化:R语言基础图形合集

R语言基础图形合集 欢迎大家关注全网生信学习者系列&#xff1a; WX公zhong号&#xff1a;生信学习者Xiao hong书&#xff1a;生信学习者知hu&#xff1a;生信学习者CDSN&#xff1a;生信学习者2 基础图形可视化 数据分析的图形可视化是了解数据分布、波动和相关性等属性必…...

mysql导入sql文件失败及解决措施

1.报错找不到表 1.1 原因 表格创建失败&#xff0c;编码问题mysql8相较于mysql5出现了新的编码集 1.2解决办法&#xff1a; 使用vscode打开sql文件ctrlh&#xff0c;批量替换&#xff0c;替换到你所安装mysql支持的编码集。 2.timestmp没有设置默认值 Error occured at:20…...

JS:获取鼠标点击位置

一、获取鼠标在目标元素中的点击位置 getClickPos.ts: export const getClickPos (e: MouseEvent) > {return {x: e.offsetX,y: e.offsetY,}; };二、获取鼠标在页面中的点击位置 getClickPos.ts: export const getPageClickPos (e: MouseEvent) > {return {x: e.pa…...

使用开源的zip.cpp和unzip.cpp实现压缩包的创建与解压(附源码)

目录 1、使用场景 2、压缩包的创建 3、压缩包的解压 4、CloseZipZ和CloseZipU两接口的区别...

网页项目之大五人格测试:认识真实的自己

大五人格测试&#xff1a;认识真实的自己 你是否曾好奇&#xff0c;自己的人格特质是什么&#xff1f;为什么有些人天生善于社交&#xff0c;有些人却更喜欢独处&#xff1f;为什么有人总是追求完美&#xff0c;有些人却随性自在&#xff1f; 心理学研究表明&#xff0c;人格的…...

IV测试仪选购避坑指南,这几点一定要提前了解

在光伏产业链中&#xff0c;IV测试仪应用广泛&#xff0c;覆盖组件分选、实验室检定、电站验收、运维排查等场景。市面上仪器品类繁杂&#xff0c;包含台式实验室款、生产线分选款、户外检测款&#xff0c;价格差距悬殊。不少采购人员不懂场景适配&#xff0c;盲目比价、堆砌参…...

WIZnet-EVB-Pico2开始,用MicroPython玩转以太网开发

大家好呀&#xff0c;好久没跟大家唠唠我最近捣鼓的嵌入式小玩意儿了&#xff01; 这段时间一直在折腾 MicroPython 的网络开发&#xff0c;踩了不少 “入门劝退坑”&#xff0c;也挖到了个让我直呼 “相见恨晚” 的宝藏 ——​WIZnet EVB-Pico2 系列开发板​。说真的&#xf…...

自建团队协作平台TeamClaw:从架构设计到部署运维全指南

1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目&#xff0c;叫teamclaw&#xff0c;仓库地址是teamclawai/teamclaw。乍一看这个名字&#xff0c;可能有点摸不着头脑&#xff0c;但深入了解一下&#xff0c;你会发现它瞄准的是一个非常具体且高频的痛点&#xff1a;团…...

告别生产翻车!用Altium Designer 21的DRC规则为你的PCB设计上好“保险”

Altium Designer 21 DRC规则深度实战&#xff1a;从设计规范到生产就绪的PCB 在硬件开发领域&#xff0c;PCB设计完成后到实际生产前的最后一道防线就是设计规则检查&#xff08;DRC&#xff09;。很多工程师将DRC视为简单的软件功能验证&#xff0c;但实际上&#xff0c;它承担…...

3分钟上手OmenSuperHub:解锁暗影精灵笔记本的真正性能潜力

3分钟上手OmenSuperHub&#xff1a;解锁暗影精灵笔记本的真正性能潜力 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度&#xff0c;自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否厌倦了官方OMEN Gaming Hub的…...

移动端AI智能体Operit AI:打造离线可编程的Android全能助手

1. 项目概述&#xff1a;在手机上构建你的全能AI副驾如果你和我一样&#xff0c;是个重度效率工具爱好者&#xff0c;同时又对AI技术充满好奇&#xff0c;那么你肯定也经历过这样的困境&#xff1a;手机上的AI助手&#xff0c;要么是功能单一的聊天机器人&#xff0c;要么就是需…...

告别SSH命令行:用VSCode的Log Viewer插件实时监控Linux syslog日志(附C程序测试)

告别终端监控&#xff1a;在VSCode中实现Linux系统日志可视化追踪 每次调试服务器应用时&#xff0c;你是否也厌倦了在SSH终端和代码编辑器之间反复切换&#xff1f;那些不断滚动的tail -f输出窗口不仅占用宝贵屏幕空间&#xff0c;还让问题排查变成了一场视觉追踪游戏。对于现…...

Windows和Office激活难题?KMS智能激活脚本让你轻松告别烦恼

Windows和Office激活难题&#xff1f;KMS智能激活脚本让你轻松告别烦恼 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 你是否曾经因为Windows系统突然弹出激活提示而中断工作&#xff1f;是否遇…...

换个角度思考【牛客tracker 每日一题】

换个角度思考 时间限制&#xff1a;1秒 空间限制&#xff1a;256M 知识点&#xff1a;线段树 网页链接 牛客tracker 牛客tracker & 每日一题&#xff0c;完成每日打卡&#xff0c;即可获得牛币。获得相应数量的牛币&#xff0c;能在【牛币兑换中心】&#xff0c;换取相…...