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

Leetcode 刷题笔记1 单调栈part01

leetcode 739 每日温度

对于单调栈问题,我觉得是在循环外部增加一些辅助项减少时间复杂度,但增加内存空间的利用

class Solution:
    def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
        ans = [0] * len(temperatures)
        stack = []
        for i in range(1, len(temperatures)):
            if temperatures[i] <= temperatures[stack[-1]]:
                stack.append(i)
            else:
                while len(stack) != 0 and temperatures[i] > temperatures[stack[-1]]:
                    ans[stack[-1]] = i - stack[-1]
                    stack.pop()
                stack.append(i)
        return ans

leetcode 496 下一个更大元素 |

审题!!!

class Solution:
    def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[int]:
        ans = [-1] * len(nums1)
        stack = [0]
        for i in range(1, len(nums2)):
            if nums2[i] <= nums2[stack[-1]]:
                stack.append(i)
            else:
                while len(stack) != 0 and nums2[i] > nums2[stack[-1]]:
                    if nums2[stack[-1]] in nums1:
                        index = nums1.index(nums2[stack[-1]])
                        ans[index] = nums2[i]
                    stack.pop()
                stack.append(i)
        return ans

leetcode 503 下一个更大元素||

循环数组法一,两个相同数组串在一起:

class Solution:
    def nextGreaterElements(self, nums: List[int]) -> List[int]:
        ans = [-1] * len(nums)
        stack = [0]
        for i in range(len(nums) * 2):
                while len(stack) != 0 and nums[i % len(nums)] > nums[stack[-1]]:
                    ans[stack[-1]] = nums[i % len(nums)]
                    stack.pop()
                stack.append(i % len(nums))
        return ans

法二:同一个数组循环两遍


http://www.kler.cn/a/592911.html

相关文章:

  • 瑞幸需要宇树科技
  • 使用hel-micro微服务实现在jsp项目中引入react组件
  • Jenkins自动化部署pigx项目的实践总结
  • DLMS电能表通讯协议学习笔记
  • 2025三掌柜赠书活动第八期:预训练语言模型:方法、实践与应用
  • 联核科技AGV无人叉车有哪些常见的安全防护措施?
  • Flutter小白零基础入门到高级项目实战全集
  • 解决uni-app授权弹框华为审核拒绝
  • vscode+wsl2+bear+clangd配置教程
  • 【Spark】查询优化中分区(Partitioning)和分桶(Bucketing)是什么关系?什么时候应当分区,什么时候应当分桶?
  • 【sgAutocomplete_v2】自定义组件:基于elementUI的el-input组件开发的搜索输入框(支持本地保存历史搜索关键词、后台获取匹配项)
  • flutter 专题 九十 四 Flutter开发之基础知识
  • xss注入实验(xss-lab)
  • 4.1-1 IS-NET-Pro视频转图片的插件
  • 在ASP.NET Core中使用NLog:配置与性能优化指南
  • vscode查看文件历史git commit记录
  • windows安装配置FFmpeg教程
  • 【C#】Winform调用NModbus实现Modbus TCP 主站通讯
  • LeetCode--2181. 链表--合并零之间的节点
  • 【AI测试必学】DeepSeek API 快速入门:获取 API Key 与调用 API 步骤详解