力扣最热一百题——每日温度

Python后面的文章,内容都比较多,但是同时我又想保持每天更新的速度,所以Python的文章我继续打磨打磨,先更新一篇算法的文章。

一身正气报国家,旁无乱境不恋她

ヾ(◍°∇°◍)ノ゙


力扣题号:739. 每日温度 - 力扣(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

上嘴脸!!!!

思路

Java解法一:直接暴力

这里直接两层for循环挨个找就行

class Solution {public int[] dailyTemperatures(int[] temperatures) {int length = temperatures.length;int[] answer = new int[length];for (int i = 0; i < length; i++) {int far = 1;for (int j = i + 1; j < length; j++) {if (temperatures[i] < temperatures[j]){answer[i] = far;break;}else {far++;}}}return answer;}
}

但是不好意思,超时了

因为没过我就不提供另外的语法了

Java解法二:栈

这里我们可以采用一个栈,来记录之前的温度(记录的是低温),然后遍历数组,发现如果今天的温度大于栈顶存储的温度,则将今天温度的数组下标和栈顶的相减获得天数差值,然后存入answer数组即可。

class Solution {public int[] dailyTemperatures(int[] temperatures) {public int[] dailyTemperatures(int[] temperatures) {// 记录数组长度int length = temperatures.length;// 准备需要返回的数组int[] answer = new int[length];// 准备一个栈来存储Deque<Integer> stack = new LinkedList<>();for (int i = 0; i < length; i++) {// 获取每次的温度int temperature = temperatures[i];// 若栈不为空而且,当前温度大于栈顶的温度(这里会一直查找)弹出栈,获取下标差值while (!stack.isEmpty() && temperature > temperatures[stack.peek()]) {// 获取栈顶元素int preIndex = stack.pop();// 取得下标差值,写入answer数组answer[preIndex] = i - preIndex;}// 存入栈stack.push(i);}return answer;}
}

C++解法二:栈

class Solution {
public:vector<int> dailyTemperatures(vector<int>& temperatures) {int length = temperatures.size();vector<int> answer(length);stack<int> stack;for(int i = 0; i < length; i++){int temperature = temperatures[i];while(!stack.empty() && temperature > temperatures[stack.top()]){int preIndex = stack.top();answer[preIndex] = i - preIndex;stack.pop();}stack.push(i);}return answer;}
};

对于C++比Java算法题跑的慢这个事情我已经习以为常了。

Python解法二:栈

class Solution:def dailyTemperatures(self, temperatures: List[int]) -> List[int]:length = len(temperatures)# python的列表初始化answer= [0] * lengthstack = []for i in range(length):temperature = temperatures[i]while stack and temperature > temperatures[stack[-1]]:prev_index = stack.pop()answer[prev_index] = i - prev_indexstack.append(i)return answer

 果然是发展越来越好的语言,速度越来越快了奥!

结语

就这样

再见ヾ( ̄▽ ̄)Bye~Bye~

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

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

相关文章

css呼吸效果实现

实现一个图片有规律的大小变化&#xff0c;呈现呼吸效果&#xff0c;怎么用CSS实现这个呼吸效果呢 一.实现 CSS实现动态效果可以使用动画( animation)来属性实现&#xff0c;放大缩小效果可以用transform: scale来实现&#xff0c;在这基础上有了动画&#xff0c;就可以设置一个…

ps人像怎么做渐隐的效果?

photoshop怎么制作人像渐隐的图片效果&#xff1f;渐隐效果需要使用渐变来实现&#xff0c;下面我们就来看看详细的教程。 首先&#xff0c;我们打开Photoshop&#xff0c;点击屏幕框选的【打开】&#xff0c;打开一张背景图片。 下面&#xff0c;我们点击左上角【文件】——【…

Exploration by random network distillation论文笔记

Exploration by Random Network Distillation (2018) 随机网络蒸馏探索 0、问题 这篇文章提出的随机网络蒸馏方法与Curiosity-driven Exploration by Self-supervised Prediction中提出的好奇心机制的区别&#xff1f; 猜想&#xff1a;本文是基于随机网络蒸馏提出的intrin…

16-nacos-快速入门

1.4.启动 启动非常简单&#xff0c;进入bin目录 然后执行命令即可&#xff1a; windows命令&#xff1a; startup.cmd -m standalone3.Nacos的依赖 父工程&#xff1a; <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-…

楼宇天台视频AI智能监管方案,时刻保障居民安全

一、背景需求分析 我们经常能看到这样的新闻报道&#xff0c;小孩登上小区的天台玩耍&#xff0c;因为家长和物业人员发现得晚&#xff0c;没有及时制止&#xff0c;结果导致意外事故的发生。此前&#xff0c;在某小区就有居民拍下多名儿童在小区高层住宅的楼顶玩耍跳跃&#…

Pytorch R-CNN目标检测-汽车car

概述 目标检测(Object Detection)就是一种基于目标几何和统计特征的图像分割,它将目标的分割和识别合二为一,通俗点说就是给定一张图片要精确的定位到物体所在位置,并完成对物体类别的识别。其准确性和实时性是整个系统的一项重要能力。 R-CNN的全称是Region-CNN(区域卷积神经…

Nginx实现tcp代理并支持TLS加密实验

Nginx源码编译 关于nginx的搭建配置具体参考笔者之前的一篇文章&#xff1a;实时流媒体服务器搭建试验&#xff08;nginxrtmp&#xff09;_如何在线测试流媒体rtmp搭建成功了吗-CSDN博客中的前半部分&#xff1b;唯一变化的是编译参数&#xff08;添加stream模块并添加其对应ss…

无线城市WiFi解决方案【完整Word】

wx供重浩&#xff1a;创享日记 获取完整无水印高清Word版 文章目录 第1章 项目背景1.1“无线城市”的定义1.2 国内外“无线城市”发展概况1.3 典型案例分析1.4 建设无线城市的必要性1.5 无线城市能为政府带来的价值 第2章 项目需求分析2.1 无线城市的现状分析2.2 无线城市的总体…

Excel中功能区的存放位置很灵活,可以根据需要隐藏或显示

在这个简短的教程中,你将找到5种快速简单的方法来恢复Excel功能区,以防丢失,并学习如何隐藏功能区,为工作表腾出更多空间。 功能区是Excel中所有操作的中心点,也是大多数可用功能和命令所在的区域。你觉得功能区占用了你太多的屏幕空间吗?没问题,只需单击鼠标,它就被隐…

Wsl2 Ubuntu在不安装Docker Desktop情况下使用Docker

目录 1. 前提条件 2.安装Distrod 3. 常见问题 3.1.docker compose 问题无法使用问题 3.1. docker-compose up报错 参考文档 1. 前提条件 win10 WSL2 Ubuntu(截止202308最新版本是20.04.xx) 有不少的博客都是建议直接安装docker desktop&#xff0c;这样无论在windows…

用栈实现队列

一、题目。 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; 实现 MyQueue 类&#xff1a; void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回元素 int peek(…

go 使用 odbc 报错 SQLSetEnvUIntPtrAttr

GitHub - alexbrainman/odbc: odbc driver written in go 在centos下使用odbc连接数据库&#xff0c;报错 SQLSetEnvUIntPtrAttr: {㠳6} ㈵″㠳4&#xff0c; unixodbc已经安装好&#xff0c;并且使用isql连接数据库没有问题&#xff0c;最后发现是 /usr/lib64/libodbc.so …

CentOS系统安装vsftpd

下载并安装vsftpd apt-get install vsftpd 安装后检查 service vsftpd status 修改配置文件(被动/匿名用户模式) vi /etc/vsftpd.conf anonymous_enableNO listenYES listen_port21 ascii_upload_enableYES ascii_download_enableYES local_enableYES guest_enable…

面试--mysql基础

1、三范式 第一范式(1NF)&#xff1a;属性不可分割&#xff0c;即每个属性都是不可分割的原子项。(实体的属性即表中的列) 第二范式(2NF)&#xff1a;满足第一范式&#xff1b;且不存在部分依赖&#xff0c;即非主属性必须完全依赖于主属性。(主属性即主键&#xff1b;完全依赖…

秋招进入尾声了,还有哪些公司和岗位可以投递?

24届秋招基本已经进入尾声了&#xff0c;接下来就是秋招补录了&#xff0c;最近在微信群看到一些同学再问哪些公司还在招人的。 在这里跟大家分享一份2024届秋招信息汇总表&#xff0c;目前已更新2000家&#xff0c;不仅有互联网公司&#xff0c;还有外企、国企、各类研究所&am…

EM@解三角形@正弦定理@余弦定理

文章目录 abstract解三角形基本原理不唯一性 正弦定理直角三角形中的情形推广锐角三角形钝角情形 小结:正弦定理 余弦定理直角三角形中的情形非直角情形小结:余弦定理公式的角余弦形式 abstract 解直角三角形问题正弦定理和余弦定理的推导 对于非直角情形,都是直角情形的推广同…

Spring底层原理学习笔记--第六讲--(Aware与InitializingBean接口及@Autowired失效分析)

Aware接口 1.Aware接口提供了一种【内置】的注入手段&#xff0c;可以注入BeanFactory&#xff0c;ApplicationContext2.InitiazingBean接口提供了一种【内置】的初始化手段3.内置的注入和初始化不收扩展功能的影响&#xff0c;总会被执行&#xff0c;因此Spring框架内部的类常…

页表和cache

页表基本原理 页表主要用来将虚拟地址映射到物理地址&#xff0c;在使用虚拟地址访问内存时&#xff0c;微处理器首先将虚拟地址拆分成页号和页内偏移量&#xff0c;然后使用页号在页表中查找对应的物理页框号&#xff0c;将物理页地址加上页内偏移量&#xff0c;得到最终的物…

IDEA高效编程快捷键

IDEA高效编程快捷键 for循环快捷键 快速生成for循环 foriTABfor (int i 0; i < ; i) {}在for循环中使用索引 iterTABfor (String s : list) {}在for循环中进行if条件判断 ifnTABif (list null) {} soutTAB快捷键 System.out.println();psfEnter快捷键 p…

arcgis 网络分析 生成可达范围/等时线

需求&#xff1a;生成从地铁站步行10分钟可达的范围面图层。 线图层预处理 在精度要求不是很高的情况下&#xff0c;可采用OSM路网&#xff0c;从中剔除不允许步行的道路类型&#xff1a;高速公路、快速路。 在路网图层中新增一个字段“步行时间”&#xff0c;用字段计算器&…