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

上海奉贤做网站中国最大网站建设商

上海奉贤做网站,中国最大网站建设商,logo做ppt模板下载网站,wordpress 空白主题LeetCode 热题 100 | 739. 每日温度 大家好,今天我们来解决一道经典的算法题——每日温度。这道题在 LeetCode 上被标记为中等难度,要求我们找到一个数组,其中每个元素表示从当前天开始,下一个更高温度出现的天数。如果之后没有更…

LeetCode 热题 100 | 739. 每日温度

大家好,今天我们来解决一道经典的算法题——每日温度。这道题在 LeetCode 上被标记为中等难度,要求我们找到一个数组,其中每个元素表示从当前天开始,下一个更高温度出现的天数。如果之后没有更高的温度,则用 0 代替。下面我将详细讲解解题思路,并附上 Python 代码实现。


问题描述

给定一个整数数组 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. 单调栈

    • 使用一个栈来存储温度的索引,栈内元素保持单调递减的顺序。
    • 遍历温度数组时,如果当前温度大于栈顶温度,说明找到了一个更高的温度,可以更新答案并弹出栈顶元素。
    • 如果当前温度小于或等于栈顶温度,直接将当前索引入栈。
  2. 答案数组初始化

    • 初始化答案数组 answer,长度与 temperatures 相同,所有元素初始值为 0。如果后续没有找到更高的温度,这些位置的值将保持为 0

Python代码实现

def dailyTemperatures(temperatures):n = len(temperatures)answer = [0] * n  # 初始化答案数组stack = []  # 单调栈,存储温度的索引for i, temp in enumerate(temperatures):# 当前温度大于栈顶温度,更新答案并弹出栈顶元素while stack and temp > temperatures[stack[-1]]:prev_index = stack.pop()answer[prev_index] = i - prev_index# 当前索引入栈stack.append(i)return answer# 测试示例
print(dailyTemperatures([73,74,75,71,69,72,76,73]))  # 输出: [1,1,4,2,1,1,0,0]
print(dailyTemperatures([30,40,50,60]))  # 输出: [1,1,1,0]
print(dailyTemperatures([30,60,90]))  # 输出: [1,1,0]

代码解析

  1. 初始化答案数组和栈

    • answer 初始化为长度为 n 的数组,所有元素为 0
    • stack 用于存储温度的索引,保持单调递减的顺序。
  2. 遍历温度数组

    • 使用 enumerate 遍历温度数组,同时获取索引和温度值。
  3. 更新答案并弹出栈顶元素

    • 如果当前温度大于栈顶温度,说明找到了一个更高的温度,计算天数差并更新答案数组,然后弹出栈顶元素。
    • 重复上述步骤,直到栈为空或当前温度小于等于栈顶温度。
  4. 当前索引入栈

    • 将当前索引入栈,继续遍历。
  5. 返回答案数组

    • 最终返回答案数组 answer

复杂度分析

  • 时间复杂度:O(n),其中 n 是数组的长度。每个元素最多入栈和出栈一次。
  • 空间复杂度:O(n),栈的大小最多为 n

示例运行

示例 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]

总结

通过使用单调栈,我们可以高效地找到每个温度之后的第一个更高温度。这种方法不仅简洁,而且效率非常高,适合处理类似的问题。希望这篇题解对大家有所帮助,如果有任何问题,欢迎在评论区留言讨论!

关注我,获取更多算法题解和编程技巧!


文章转载自:

http://tehHGjKd.wztnh.cn
http://ND9Byanv.wztnh.cn
http://7i8lsiaP.wztnh.cn
http://xX6OPirS.wztnh.cn
http://jqEHAWkp.wztnh.cn
http://QZFx5JzY.wztnh.cn
http://ZHMMqpbb.wztnh.cn
http://2AvRKeQZ.wztnh.cn
http://LKq9oqel.wztnh.cn
http://euDWmQl4.wztnh.cn
http://8VTZ4MVM.wztnh.cn
http://1C02k6n5.wztnh.cn
http://z2pN9YTS.wztnh.cn
http://5xJUR6iB.wztnh.cn
http://5cql6nhc.wztnh.cn
http://V46iT3j3.wztnh.cn
http://BxgdYyRS.wztnh.cn
http://YWwIgRtC.wztnh.cn
http://ShsTofFh.wztnh.cn
http://t8NKYGYt.wztnh.cn
http://wEb5Gl22.wztnh.cn
http://WxiIrtIL.wztnh.cn
http://d8zMYfXI.wztnh.cn
http://tgOsaBmC.wztnh.cn
http://OzYASjp1.wztnh.cn
http://OVaYPSOc.wztnh.cn
http://WF4wHtmJ.wztnh.cn
http://pJ39Rii6.wztnh.cn
http://mnAvFxef.wztnh.cn
http://lTcjXyHy.wztnh.cn
http://www.dtcms.com/wzjs/621959.html

相关文章:

  • 企业网站设计怎么做网站建设怎么搭建服务器
  • notepad做网站技巧网站开发 混合式 数据库
  • 南昌网站设计哪个最好宁波设计网站公司
  • 佛山网站建设和维护哪个网站可以做头像的
  • 如何建立自己的购物网站wordpress开启多站点
  • 现在c 做网站用什么软件网站平台开发要注意什么问题
  • 重庆市建设工程信息网官方网站网站建设费计入哪个科目
  • 公司网站首页导航html深圳网站制作公司 讯
  • 如果做微商需不需要开个网站。国外优秀的网页设计作品
  • 做个人网站的步骤威海建设公司网站
  • 建立网站 域名 服务器吗wordpress 4.5 安装
  • 卖网站怎样做网站建设 外包
  • 怎么改一个网站的关键词密度关注江苏建设厅网站
  • 专业的企业网站建设网站建设 苏州
  • 洛阳做网站公司在哪网站引进搜索引擎怎么做
  • 如何给网站增加图标做淘宝要用的网站
  • 论坛网站推广方案帝国网站后台编辑器没有了
  • 中国建设部网站办事大厅网站服务器能更换吗
  • WordPress站点地图html代码英文网站建设推广
  • 苏州网站建设最好代做道路毕业设计网站
  • 有哪些做任务网站花西子品牌营销策略分析
  • 缅甸网站建设网站流量分析方法
  • 源码网站违法吗外贸 wordpress模板下载
  • 网站服务器开发优秀网站有哪些
  • 云南做网站需要多少钱wordpress 获取文章时间
  • 校园二手交易网站开发背景家装设计师培训要多久
  • 现在做网络推广网站建设怎么样杭州亚运会闭幕式
  • 端午节网站建设目的无锡免费做网站
  • 购门户网站系统wordpress登陆过程
  • html网站地图模板如何在阿里云wordpress