You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化严格递增栈实现的LeetCode每日温度问题解法?

每日温度问题超时优化求助

我在解决每日温度问题,给定数组[30,40,50,60],要求返回每个元素对应下一个更高温度的索引差,正确输出应为[1,1,1,0]。

我采用的算法思路如下:

  • 从数组末尾向前遍历
  • 如果是最后一个元素,向输出列表添加0并将该索引入栈
  • 如果当前温度大于栈顶元素对应的温度,计算索引差并加入输出,再将当前索引入栈
  • 如果当前温度小于等于栈顶元素对应的温度,则持续出栈直到条件不满足,再更新输出列表和栈

我原本认为这个解法的时间复杂度是O(N),但提交后出现了超时问题,不知道该如何进一步优化。以下是我的Python代码:

def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
        output = []
        r = len(temperatures) - 1
        stack = []
        while r >= 0:
            if r == len(temperatures) - 1:
                stack.append(r)
                output.insert(0, 0)
            else:
                if temperatures[stack[-1]] > temperatures[r]:
                    output.insert(0, stack[-1]-r)
                    stack.append(r)
                else:
                    while stack and temperatures[stack[-1]] <= temperatures[r]:
                        stack.pop()
                    if len(stack) == 0:
                        output.insert(0, 0)
                        stack.append(r)
                    else:
                        output.insert(0, stack[-1]-r)
                        stack.append((r))

            r -= 1
        return output

内容的提问来源于stack exchange,提问作者Leo Baby Jacob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 01:25:21