单调队列(算法)

news/2024/10/25 1:25:38/

单调队列是求解区间最大值或最小值的算法

正向遍历时,是先入后出 , 队列中的下标是按照从左往右递增 , 由于正向遍历,当前下标比之前下标大,所以与末尾值比较 , 并且入列时添加在末尾 , 出列弹出队首

class Solution:def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:# 求解区间最大值q = deque([])ans = []for i , num in enumerate(nums):# 入列while q and nums[q[-1]] <= num:q.pop()q.append(i)# 超出区间 出列if i - q[0] + 1 > k:q.popleft()if i >= k - 1:ans.append(nums[q[0]])return ans

反向便利时,是先出后入,队列中的下标也是按照从左往右递增 ,由于反向遍历 , 当前下标比之前下标小,所以与队列首位比较 , 并且入列时添加在首位 , 出列弹出队尾

class Solution:def minimumCoins(self, prices: List[int]) -> int:n = len(prices)q = deque([(n+1,0)])for i in range(n,0,-1):while q and q[-1][0] > 2 * i + 1:q.pop()f = q[-1][1] + prices[i-1]while q and q[0][1] >= f:q.popleft()q.appendleft((i,f))return q[0][1]

http://www.ppmy.cn/news/1249919.html

相关文章

【产品设计】SaaS产品数据分析之指标与标签

数据分析能够应用到各个领域和岗位&#xff0c;那么在SaaS产品中的应用会是如何&#xff1f;本文将探索SaaS产品在数据分析中的应用&#xff0c;并对其指标与标签的设计进行总结分析&#xff0c;一起来看看吧。 数据分析是业务开展过程中&#xff0c;收集记录各种行为产生的数据…

基于docker的onlyoffice使用--运行JavaSpringExample

背景 我之前看到有开源项目很好地集成了onlyoffice&#xff0c;效果要比kkfilepreview好&#xff08;应当说应用场景不太一样&#xff09;。本文是在window10环境&#xff0c;安装完Docker Desktop的基础上运行onlyoffice&#xff0c;并利用官网JavaSpringExample进行了集成。 …

数据仓库数据管理模型

数据仓库分为贴源层、数据仓库层、数据服务层&#xff0c;有人叫做数仓数据模型&#xff0c;或者叫"数据管理模型”。 我们为什么要进行数据分层管理&#xff0c;下图的优点介绍已经说得比较明确&#xff0c;再补充几点&#xff1a; 保障数据一致性&#xff1a;上层的数…

浅析SD-WAN技术如何加强企业网络安全

在这个数字化时代&#xff0c;企业组网的安全性已经成为许多企业所面临的一个重要挑战。特别是随着云计算、移动办公等新型信息技术的普及&#xff0c;企业网络的规模和复杂度不断增加&#xff0c;网络攻击和数据泄露的威胁也日益增加。因此&#xff0c;企业需要采取更加有效的…

虚拟机指定开放数据库3306端口

1、查看当前防火墙状态&#xff1a; sudo firewall-cmd --state 2、开放指定端口 sudo firewall-cmd --zonepublic --add-port3306/tcp --permanent 3、重新加载防火墙配置 sudo firewall-cmd --reload 4、检查端口是否开放成功 sudo firewall-cmd --zonepublic --list-por…

第十五届蓝桥杯(Web 应用开发)模拟赛 2 期-大学组(详细分析解答)

目录 1.相不相等 1.1 题目要求 1.2 题目分析 1.3 源代码 2.三行情书 2.1 题目要求 2.2 题目分析 2.3 源代码 3.电影院在线订票 3.1 题目要求 3.2 题目分析 3.3 源代码 4.老虎坤&#xff08;不然违规发不出来&#xff09; 4.1 题目要求 4.2 题目分析 4.3 源代码 …

C#学习相关系列之数组---常用方法使用(二)

1、声明和初始化数组 int[] arr1 new int[5]; // 声明一个长度为5的整型数组 int[] arr2 {1, 2, 3, 4, 5}; // 声明并初始化一个整型数组 2、访问数组元素 int[] arr {1, 2, 3, 4, 5}; Console.WriteLine(arr[0]); // 输出&#xff1a;1 3、获取数组长度 int[] arr {1, …

ExoPlayer - Failed to initialize OMX.qcom.video.decoder.avc

人莫鉴于流水而鉴于止水&#xff0c;唯止能止众止 1. 背景 使用ExoPlayer&#xff0c;我不信你没遇到过这个问题&#xff1a; java.lang.IllegalArgumentException: Failed to initialize OMX.qcom.video.decoder.avc 详细内容如下图所示&#xff1a; 2. MediaCodec(解码器) …