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

四川住房和城乡建设厅网站不能进入资溪做面包招聘的网站

四川住房和城乡建设厅网站不能进入,资溪做面包招聘的网站,源码网站有哪些,网站建设比较好的公司给定一个整数数组 temperatures,表示每天的温度,要求返回一个数组 answer,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 问题分析 我们需要计算…

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


问题分析

我们需要计算每一天之后需要等多少天才能遇到更高的温度。如果无法找到更高的温度,就返回 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]


解题思路:使用单调栈

在这个问题中,我们要计算每个温度之后,需要多少天才会遇到一个更高的温度。一个直接的暴力解法是,对每一天,从它之后的所有天中查找第一个更高的温度,这样会导致 O(n^2) 的时间复杂度。显然,暴力解法并不高效,特别是对于较大的输入。

为了提高效率,我们可以使用一个单调栈来将时间复杂度降低到 O(n)。下面是具体的思路:

关键步骤:

  1. 从后向前遍历:我们从最后一天开始遍历,每次都试图通过栈来维护一个"待解决"的温度序列。这样可以更容易地通过栈找到每个温度的下一个更高温度。

  2. 维护递减栈:栈中存储的是当前遍历过的温度的索引,并且栈中的温度是递减的。这意味着栈顶的元素对应的温度是当前栈中最小的(即当前最可能成为下一个更高温度的温度)。

  3. 遇到更高温度时计算天数:如果栈顶元素的温度比当前温度低,我们就可以计算该元素的下一个更高温度的天数。

  4. 栈顶小于等于当前温度时,出栈:如果栈顶的温度小于当前温度,那么说明当前温度是下一个更高温度的候选,因此栈顶元素出栈,继续判断下一个栈顶元素。

  5. 栈顶大于当前温度时,计算等待天数:栈顶元素的温度大于当前温度时,说明找到了下一个更高的温度,计算距离当前天数的差。

  6. 压入当前索引:最后,将当前温度的索引压入栈中,准备处理下一个温度。


代码实现:

class Solution {public int[] dailyTemperatures(int[] temperatures) {int n = temperatures.length;int[] ans = new int[n];  // 用来存储每一天之后需要等待的天数Deque<Integer> st = new ArrayDeque<>();  // 单调栈,存储索引// 从后往前遍历for (int i = n - 1; i >= 0; i--) {int t = temperatures[i];  // 当前温度// 维护单调递减栈:移除栈顶比当前温度低的元素while (!st.isEmpty() && t >= temperatures[st.peek()]) {st.pop();  // 弹出栈顶温度比当前低的元素}// 栈不为空,说明有比当前温度更高的温度if (!st.isEmpty()) {ans[i] = st.peek() - i;  // 计算等待天数}// 将当前天的索引压入栈中st.push(i);}return ans;  // 返回结果数组}
}

代码详解:

  1. 栈的作用:栈存储的是温度的索引,而不是温度本身,这样可以方便计算等待天数。

  2. 逆序遍历:从最后一天开始,逐步处理每一天的温度。这是因为我们需要查找每一天之后第一个更高的温度,而如果从前向后遍历就需要不断地返回去查找,效率较低。

  3. 栈的更新:每当我们遇到比栈顶元素小的温度时,栈顶元素的下一次更高温度就是当前温度,计算并记录等待的天数。如果栈顶元素比当前温度大,说明栈顶的温度就是下一个更高温度,记录下来。


时间复杂度分析:

  • 时间复杂度O(n)。每个温度索引最多入栈一次,出栈一次,因此栈的操作总共执行 n 次。

  • 空间复杂度O(n)。我们使用了一个栈来存储索引,最多需要存储 n 个元素。


总结:

通过使用单调栈的技巧,我们能够将时间复杂度从暴力解法的 O(n^2) 优化到 O(n),极大地提升了算法效率。这个方法利用栈来存储待解决的温度索引,并通过栈顶元素的温度与当前温度的比较,快速找到每一天需要等待的天数。


希望这篇文章能够帮助你更好地理解和掌握单调栈的应用技巧!如果你有任何疑问或更好的优化思路,欢迎在评论区留言讨论!


文章转载自:

http://Qb6NvVgT.kkjhj.cn
http://MWxHJtQY.kkjhj.cn
http://YQ5HzuwK.kkjhj.cn
http://Udfguqhh.kkjhj.cn
http://wGD0J5Oc.kkjhj.cn
http://FlDLNDPs.kkjhj.cn
http://zOGcQX1Y.kkjhj.cn
http://svXGFcjt.kkjhj.cn
http://Ln1dQXSs.kkjhj.cn
http://iLjo6UjW.kkjhj.cn
http://Ar6t9VfV.kkjhj.cn
http://APMwYYS0.kkjhj.cn
http://MqKZMl2N.kkjhj.cn
http://u24A3p2l.kkjhj.cn
http://MrPxONgZ.kkjhj.cn
http://mhI3cbvh.kkjhj.cn
http://oDFQ3ECh.kkjhj.cn
http://Nv2Aepnu.kkjhj.cn
http://TEfK5kBh.kkjhj.cn
http://Ln2Jeph9.kkjhj.cn
http://AmkdNMcn.kkjhj.cn
http://t3eihUgo.kkjhj.cn
http://Om7MRe29.kkjhj.cn
http://YRbL2wYp.kkjhj.cn
http://3YpestvO.kkjhj.cn
http://oAN8ZQOb.kkjhj.cn
http://1hPv8XBp.kkjhj.cn
http://bDCbmZdn.kkjhj.cn
http://7CZXIs4Q.kkjhj.cn
http://hX4dJFrc.kkjhj.cn
http://www.dtcms.com/wzjs/739104.html

相关文章:

  • 沧州网站制作的流程网站建设ydwzjs
  • 泉州做网站优化哪家好seo技术是什么意思
  • 17做网站广州起做网店俄罗斯搜索引擎yandex
  • 西安有哪些网站建设外包公司好企业网站流程
  • 网站制作公司杭州南京网站建站公司
  • 网址怎么申请网站网站设计岗位的职责与要求
  • 茂易网站建设长沙官网优化技术
  • 代做视频的网站Wordpress建立空白页面
  • 建设企业网站官网u盾登录网片点焊机
  • 湛江做寄生虫网站网站做关键词排名
  • 网站建设优化推广贵州wordpress接erp
  • 哪网站建设做外贸站推广
  • 平面设计师用的网站WordPress邀请码功能
  • 微信手机网站搭建东莞设计网站建设方案
  • 上海手机网站制作哪家好浙江省建设信息港证书
  • 网站建设的基础天使投资
  • 西安个人做企业网站南京专业做网站的公司有哪些
  • 徐州建设工程审图中心网站响应式网站和普通网站
  • 西安网站设计试听四川建设机械网站首页
  • 沧州做企业网站公司建网站怎样才能通过备案
  • 北京旅游网站建设网站做的好的医院
  • 濮阳网站建设兼职百度收录有什么用
  • 小白如何搭建一个网站同学录网站开发的背景
  • 四川网站开发农产品销售平台
  • 设计之窗网站phpmysql网站开发技术项目式教程
  • 个人网站怎么做微商怎样与知名网站做友情链接
  • 怎么做wp网站jsp网站建设技术案例
  • 太原定制网站制作流程wordpress 仿百度模板
  • 专业做网站建设公司好吗做网站步骤
  • 做视频直播类型的网站设计资料网站