首页 > 其他分享 >单调栈模型

单调栈模型

时间:2023-11-18 10:46:32浏览次数:33  
标签:nums int 模型 List stk temperatures ans 单调

单调栈本质: 及时去掉无用数据, 保证栈中数据有序。

 

模板题:

 

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

 

class Solution:
    def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
        n = len(temperatures)
        stk = []
        ans = [0] * n
        for i, t in enumerate(temperatures):
            while stk and temperatures[stk[-1]] < t:
                j = stk.pop()
                ans[j] = i - j
            stk.append(i)
        
        return ans

 

 

 数组的循环操作可以用模运算来实现

class Solution:
    def nextGreaterElements(self, nums: List[int]) -> List[int]:
        n = len(nums)
        stk = []
        ans = [-1] * n

        for i in range(n * 2):
            while stk and nums[stk[-1]] < nums[i % n]:
                j = stk.pop()
                ans[j] = nums[i % n]
            stk.append(i % n)
        
        return ans

 

class Solution:
    def nextGreaterElements(self, nums: List[int]) -> List[int]:
        n = len(nums)
        stk = []
        ans = [-1] * n

        for i in range(n * 2 - 1, -1, -1):
            while stk and nums[stk[-1]] <= nums[i % n]:
                stk.pop()
            if stk:
                ans[i % n] = nums[stk[-1]]
            stk.append(i % n)
        
        return ans

 

 

 

class Solution:
    def trap(self, height: List[int]) -> int:
        n = len(height)
        stk = []
        res = 0

        for i, val in enumerate(height):
            while stk and height[stk[-1]] <= val:
                bottom_h = height[stk.pop()]
                if not stk:
                    break
                left = stk[-1]
                dh = min(height[left], val) - bottom_h
                res += dh * (i - left - 1)
            stk.append(i)
        
        return res

 

标签:nums,int,模型,List,stk,temperatures,ans,单调
From: https://www.cnblogs.com/zk6696/p/17840161.html

相关文章

  • 代码随想训练营第三十七天(Python)| 738.单调递增的数字、968.监控二叉树
    738.单调递增的数字classSolution:defmonotoneIncreasingDigits(self,n:int)->int:#主要思路当前数字比前面数字小时。前面数字-1,当前数字变2为9str_n=str(n)foriinrange(len(str_n)-1,0,-1):ifstr_n[i]<str_n[......
  • matlab层次分析法模型及相关语言基础
    发现更多计算机知识,欢迎访问Cr不是铬的个人网站代码放在最后面!这篇文章是学习层次分析法模型的笔记。1.什么时候用层次分析法层次分析法是建模比赛中最基础的模型之一,其主要用于解决评价类问题(例如:选择哪种方案最好、哪位运动员或者员工表现的更优秀)。层次分析法式利用各项......
  • cesium线切割为多个贴地形贴模型的点
    interpolation(pos1,pos2){letpo1=pos1letpo2=pos2this.getPositionwkt(po1,po2).then((res)=>{this.$config.viewer.scene.clampToHeightMostDetailed(res).then((clampedCartesians)=>{//异步获取......
  • task02:免模型预测、免模型控制学习总结
    免模型预测这节学习的主要是蒙特卡洛方法和时序差分法有模型与免模型状态转移概率是已知的,这种情况下使用算法我们称为有模型算法,而对于智能体来说环境是未知的,在该情况下使用算法,我们称之为免模型算法。在这里应该注意,除了动态规划外,其他的基础强化学习算法都是免模型的。有......
  • 深度学习算法原理实现——模型欠拟合和过拟合处理
    欠拟合:fromtensorflow.kerasimportregularizersimportnumpyasnpfromtensorflowimportkerasfromtensorflow.kerasimportlayersfromtensorflow.keras.datasetsimportimdbfromtensorflow.keras.datasetsimportmnistdefplot_val_loss_and_acc(model):......
  • 深度学习算法原理实现——自写神经网络识别mnist手写数字和训练模型
    代码来自:https://weread.qq.com/web/reader/33f32c90813ab71c6g018fffkd3d322001ad3d9446802347《python深度学习》fromtensorflow.keras.datasetsimportmnistfromtensorflow.kerasimportoptimizersimporttensorflowastfimportnumpyasnpclassNaiveDense:d......
  • 来文心中国行厦门站,感受大模型落地生花的进展!
    11月22日,文心中国行将走进厦门。届时,政府、高校及企业的相关专家将现场分享AI和大模型最新进展,从人工智能政策解读,到大模型底层技术,再到产教融合下的空间感知与计算,产业创新应用洞察及实践案例等等,通过鞭辟入里的研讨交流,让参会者深入了解如何把握大模型时代新机遇。现场还特别设置......
  • 单调栈
    单调栈定义单调栈即满足单调性的栈结构。与单调队列相比,其只在一端进行进出。使用方法:就是从栈顶读出来一个元素,该元素满足单调性的某一端。例如取出栈中的最小值。原理将一个元素插入单调栈时,为了维护栈的单调性,需要在保证将该元素插入到栈顶后整个栈满足单调性的前提下弹出......
  • 三维模型几何坐标偏差修正(纠正)的常用方法分析
    三维模型几何坐标偏差修正(纠正)的常用方法分析 以下是几个常用的倾斜摄影三维模型几何坐标偏差修正和纠正的方法:1、基于地面控制点的坐标转换:地面控制点是已知精确地理位置的点,可以通过测量仪器获取其准确的世界坐标。首先,在倾斜摄影影像中识别并测量这些地面控制点,并将其与真......
  • Python绘制神经网络模型的结构示意图的方法
      本文介绍基于Python语言,对神经网络模型的结构进行可视化绘图的方法。  最近需要进行神经网络结构模型的可视化绘图工作。查阅多种方法后,看到很多方法都比较麻烦,例如单纯利用graphviz模块,就需要手动用DOT语言进行图片描述,比较花时间;最终,发现利用第三方的ann_visualizer模块,可......