【LeetCode 算法笔记】739. 每日温度

news/2024/9/18 11:25:34/ 标签: 算法, leetcode, 笔记

目录

  • 问题描述
  • 暴力解法

问题描述

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

示例 1:
输入: temperatures = [73,74,75,71,69,72,76,73]
输出: [1,1,4,2,1,1,0,0]

示例 2:
输入: temperatures = [30,40,50,60]
输出: [1,1,1,0]

示例 3:
输入: temperatures = [30,60,90]
输出: [1,1,0]

提示:
1 <= temperatures.length <= 105
30 <= temperatures[i] <= 100

暴力解法

对于每一个温度值,都向后进行扫描,直到找到比这个值更大的值。

class Solution:def dailyTemperatures(self, temperatures: List[int]) -> List[int]:res = []n = len(temperatures)for i in range(n):j = 0finded = Falsewhile(i+j < n):if temperatures[i] < temperatures[i+j]:finded = Truebreakelse:j += 1res.append(j if finded else 0)return res

算法复杂度:
最好的情况下,每一天的温度比前一天更高: O ( N ) O(N) O(N)
最坏情况下,每一天的温度比前一天更低,总共运行 N ∗ ( N − 1 ) / 2 N*(N-1)/2 N(N1)/2 次 : O ( N 2 ) O(N^2) O(N2)

这个方法在 LeetCode 中提交的话,会超时无法通过

先把 下标存到栈里,如果栈顶元素遇到了更高的温度,持续抛出

class Solution:def dailyTemperatures(self, temperatures: List[int]) -> List[int]:stack = []n = len(temperatures)res = [0]*nfor i in range(n):while(stack and temperatures[stack[-1]] < temperatures[i]):k = stack.pop()res[k] = (i-k)stack.append(i)return res

算法复杂度: O ( N ) O(N) O(N)


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

相关文章

使用Rustup快速无缝升级Rust

rust update 升级 Rustup 是 Rust 官方的跨平台 Rust 安装工具。我们可以使用rustup升级rust版本 rustup updaterustup is not installed at ‘E:\cargo’ 意思是说’E:\argo’未安装rustup 将原来C:\Users\用户名\.cargo\bin下的文件复制到新的E:\cargo\bin $ rustup upda…

MyCat管理及监控

目录 MyCat原理 MyCat管理 MyCat-web 安装Zookeeper 安装Mycat-web MyCat原理 在MyCat中&#xff0c;当执行一条SQL语句时&#xff0c;MyCat需要进行SQL解析、分片分析、路由分析、读写分离分析 等操作&#xff0c;最终经过一系列的分析决定将当前的SQL语句到底路由到那几…

【Android Studio】2024.1.1最新版本AS调试老项目(老版AS项目文件、旧gradle)导入其他人的项目

文章目录 实验环境开始修改项目文件1. 删除.gradle及.idea两个文件夹2.修改SDK路径&#xff08;本地SDK存放路径&#xff09;3.修改gradle版本4.修改gradle插件版本&#xff08;AGP&#xff09;5.修改JDK版本 实验环境 Android Studio 版本 项目版本 开始修改项目文件 1. 删…

后端面试经典问题汇总

后端面试经典问题汇总 后端开发在现代互联网应用中扮演着关键角色&#xff0c;涉及的数据处理、业务逻辑和系统性能等方面在面试中常常会被深入考察。本文将总结一些后端面试中常见的经典问题&#xff0c;并给出简单的解答思路。 1. HTTP 协议 问题&#xff1a;请解释 HTTP …

电脑与电脑之间怎么快速传输文件?

若两台电脑在同一局域网&#xff0c;可以使用Windows远程桌面传输文件&#xff0c;或者使用远程看看这款免费的远程桌面软件&#xff0c;它支持在不同的网络之间传输文件&#xff0c;而且速度快、安全性高。 步骤1. 在两台电脑上下载、安装并运行远程看看。 步骤2. 注册一个远…

Java面试篇基础部分-Java泛型详解

导语   Java中泛型的本质是参数化类型,泛型提供了编译时类型的安全检测机制。泛型机制允许程序在编译的时候检测非法的类型,例如要实现一个对于字符串、整型、浮点型、对象类型等比较其大小的方法,就可以使用泛型,在使用的时候在明确所要比较的数据类型就可以了。 当然如…

React 前端应用结合 Nginx 部署指南及常见错误排查

在现代 Web 开发中&#xff0c;React 已成为构建用户界面的流行选择&#xff0c;而 Nginx 则是一个高性能的 Web 服务器&#xff0c;广泛用于静态文件的托管和负载均衡。在本篇博客中&#xff0c;我们将详细介绍如何将一个 React 应用部署到 Nginx 上&#xff0c;并探讨在部署过…

Android 设计模式

设计模式六大原则 单一职责原则&#xff08;Single Responsibility Principle, SRP&#xff09; 每个类应该仅有一个引起它变化的原因。 这意味着一个类只应该专注完成一项任务或功能。 举例 考虑一个 User 类&#xff0c;用于表示用户信息&#xff0c;例如用户名和密码。如…

416. 分割等和子集

目录 一&#xff1a;题目&#xff1a; 二&#xff1a;代码&#xff1a; 三&#xff1a;结果&#xff1a;、 一&#xff1a;题目&#xff1a; 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 …

EmguCV学习笔记 C# 11.5 目标检测

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…

Git提交有乱码

服务器提交记录如图 可知application.properties中文注释拉黄线 &#xff0c;提示Unsupported characters for the charset ISO-8859-1 打开settings - Editor - File Encodings 因为我们项目的其他文件都是UTF-8&#xff0c;所以&#xff0c;我们将默认值都改成UTF-8 然后…

Android SDK和NDK的区别

Android SDK&#xff08;Software Development Kit&#xff0c;软件开发工具包&#xff09;和NDK&#xff08;Native Development Kit&#xff0c;本地开发工具包&#xff09;在Android应用开发中扮演着不同的角色&#xff0c;它们各自具有独特的功能和优势。 一、定义与功能 …

【工具推荐】ThinkphpGUI - 一款Thinkphp框架漏洞扫描集合工具,一键getshell。

0x00 工具介绍 ThinkphpGUI是一款Thinkphp框架漏洞扫描集合工具。 0x01 下载链接 ThinkphpGUI下载链接: 夸克网盘分享 0x02 功能介绍 ThinkPHP 5.0 RCE ThinkPHP 5.0.10 RCE ThinkPHP 5.0.22/5.1.29 RCE ThinkPHP 5.0.23 RCE ThinkPHP 5.0.24-5.1.30 RCE ThinkPHP 5 文…

图说GPT网络结构(参数量与计算量)

现在AI领域的主流模型几乎都是Transformer网络架构衍生而来。大热的LLM中的生成类模型很多都是来自于Transformer的变体&#xff0c;即decoder only架构。而GPT就是该类中的经典模型。尽管现在变体甚多&#xff0c;但大多没有根本性地改变其套路。 为了阐述方便&#xff0c;首…

Linux echo,printf 命令

参考资料 【Linux】ハイフンをいっぱい出したかっただけなのに【printfコマンド】 目录 一. echo命令1.1 -n 选项1.2 -e 选项1.3 配合扩展实现批量换行输出1.3.1 xargs -n 11.3.2 tr \n1.3.3 xargs printf "%s\n"1.4 ANSI转义序列1.5 彩色文本输出 二. printf 命令…

敏捷开发方法例题

答案&#xff1a;B 敏捷方法 特点 极限编程XP 4大价值观&#xff0c;5大原则&#xff0c;12个最佳实践 水晶法 认为每一个不同的项目都需要一套不同的策略&#xff0c;约定和方法论&#xff0c;认为人对软件质量有重要影响&#xff0c;因此随着项目质量和开发人员须知的提…

速盾:你知道高防 IP 和高防 CDN 的区别吗?

在当今网络安全形势日益严峻的情况下&#xff0c;网站的安全防护成为了企业和个人关注的焦点。高防 IP 和高防 CDN 作为两种常见的网络安全防护手段&#xff0c;被广泛应用于网站的安全防护中。那么&#xff0c;高防 IP 和高防 CDN 有什么区别呢&#xff1f;防护网站哪个更好呢…

ip地址为什么要轮换

在网络世界中&#xff0c;IP地址是设备与互联网通信的身份证。然而&#xff0c;单一的IP地址可能会因为各种原因而需要轮换。IP轮换是指在一定时间内更换正在使用的IP地址&#xff0c;这一策略在多种网络应用中发挥着重要作用。本文将探讨IP地址轮换的原因、其带来的优势以及实…

一口气学完docker【入门到精通】

一、容器 1、什么是容器 容器是一种轻量级的虚拟化技术&#xff0c;它为应用程序提供了一种隔离的运行环境。在操作系统级别上实现&#xff0c;容器将应用程序及其所有依赖项&#xff08;包括库、配置文件等&#xff09;封装在一起&#xff0c;形成一个独立的标准单元。 每个…

vscode配置django环境并创建django项目

1、创建文件夹 创建文件夹 并在vscode打开 终端输入命令 “ python -m venv env ” 查看目录结构 2、创建项目 在终端输入 django-admin startproject 文件名(这里以myshop为例) 3、创建应用 在myshop打开终端 在终端输入 django-admin startapp 应用名 这里以app1为例…