代码随想录算法训练营DAY13 | 栈与队列 (3)

一、LeetCode 239 滑动窗口最大值

题目链接:239.滑动窗口最大值icon-default.png?t=N7T8https://leetcode.cn/problems/sliding-window-maximum/

思路:使用单调队列,只保存窗口中可能存在的最大值,从而降低时间复杂度。

public class MyQueue{Deque<Integer> queue = new LinkedList<>();//弹出元素时,判断要窗口弹出的数值是否等于队列出口的数值void poll(int val){if(!queue.isEmpty() && val == queue.peek()){queue.poll();}}//添加元素时,判断要添加的元素是否大于队列入口处的元素//如果大于,就将入口处元素弹出,保证队列单调递减void offer(int val){while(!queue.isEmpty() && val > queue.getLast()){queue.removeLast();}queue.offer(val);}//栈顶始终为最大值int peek(){return queue.peek();}
}
class Solution {public int[] maxSlidingWindow(int[] nums, int k) {if(nums.length == 1){return nums;}int len = nums.length - k + 1;int[] ans = new int[len];int index = 0;MyQueue queue = new MyQueue();//先把前k个元素入队for(int i = 0; i < k; i++){queue.offer(nums[i]);}//记录前k个元素中的最大值ans[index++] = queue.peek();for(int i = k; i < nums.length; i++){//弹出 + 入队queue.poll(nums[i-k]);queue.offer(nums[i]);//记录每组窗口的最大值ans[index++] = queue.peek();}return ans;}
}

 二、LeetCode 347 前k个高频元素

        暂不更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/455549.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第七届西湖论剑·中国杭州网络安全技能大赛 AI 回声海螺 WP

第七届西湖论剑中国杭州网络安全技能大赛-AI-回声海螺 开题&#xff0c;提示输入密码给FLAG。 这个回声海螺应该是个AI&#xff0c;就是复读机&#xff0c;应该是想办法从中骗出密码。 感觉这题不像是AI&#xff0c;也没用啥模型&#xff0c;应该是WEB。或者是说类似于AI的提示…

2024牛客寒假算法基础集训营1——H

输入 3 4 11 1 8 1 4 1 5 1 1 4 11 5 8 1 4 1 5 1 1 4 0 2 0 0 0 3 0 4 1 输出 3 6 5 思路&#xff1a; 考虑二进制&#xff0c;有点像数位dp 本题考虑集合划分&#xff0c;累加最大值即可 代码如下&#xff1a; #include<bits/stdc.h> using namespace std;void solv…

读写锁ReentrantReadWriteLockStampLock详解

传送门&#xff1a;深入理解AQS独占锁之ReentrantLock源码分析 目录 读写锁介绍 ReentrantReadWriteLock介绍 ReentrantReadWriteLock的使用 应用场景 锁降级 读写锁设计思路 StampedLock介绍 StampedLock的使用 演示乐观读 在缓存中的应用 使用场景和注意事…

立足智能存取解决方案|HEGERLS智能托盘四向车储存制动能量 实现能源回收

对于商业配送和工业生产的企业而言&#xff0c;如何能高效率、低成本进行低分拣、运输、码垛、入库&#xff0c;用以提升仓库空间的利用效率&#xff0c;是现在大多企业急需要解决的行业痛点。对此&#xff0c;为了解决上述痛点&#xff0c;近年来&#xff0c;物流仓储集成商、…

SpringSecurity(18)——OAuth2授权码管理

AuthorizationCodeServices public interface AuthorizationCodeServices {//为指定的身份验证创建授权代码。String createAuthorizationCode(OAuth2Authentication authentication);//使用授权码。OAuth2Authentication consumeAuthorizationCode(String code)throws Invali…

【力扣】Z字形变换,模拟+直接构造

Z字形变换原题地址 方法一&#xff1a;利用二维矩阵模拟 对于特殊情况&#xff0c;z字形变换后只有一行或只有一列&#xff0c;则变换后的字符串和原字符串相同。 对于一般情况&#xff0c;我们可以考虑按照题目要求&#xff0c;把字符串按照Z字形存储到二维数组中&#xff…

MyBatis之环境搭建以及实现增删改查

MyBatis之环境搭建以及实现增删改查 前言准备工作1.保证数据库已启动2. 创建Person表 MyBatis开发环境搭建1.下载MyBatis jar包2.下载MySQL的JDBC驱动3.新建Java工程&#xff08;Java8&#xff09;&#xff0c;导入MyBatis的jar包以及JDBC驱动 实现步骤1. 创建Peron类2. 编写Ma…

Python根据文件后缀整理文件夹

文章目录 文件夹类型字典移动文件主流程 此前用Python实现了根据文件后缀整理文件夹的方法&#xff0c;见此文&#xff1a;Python根据文件后缀整理文件夹。但这篇博客并没有进行良好的封装&#xff0c;下面仍以文件夹整理为目的&#xff0c;用类来重新实现次功能。 文件夹类型…

13. Threejs案例-绘制3D文字

13. Threejs案例-绘制3D文字 实现效果 知识点 FontLoader 一个用于加载 JSON 格式的字体的类。 返回 font&#xff0c;返回值是表示字体的 Shape 类型的数组。 其内部使用 FileLoader 来加载文件。 构造器 FontLoader( manager : LoadingManager ) 参数类型描述managerLo…

idea运行程序报错 java 程序包org.junit不存在

在 IntelliJ IDEA 中运行程序时遇到错误提示&#xff1a;“java: 程序包org.junit不存在”&#xff0c;针对这一问题&#xff0c;我们可以考虑以下三步来解决&#xff1a; 第一步&#xff1a;检查JUnit依赖 尽管现代项目创建时通常会默认引入JUnit依赖&#xff0c;但仍需检查…

算法学习——LeetCode力扣哈希表篇2

算法学习——LeetCode力扣哈希表篇2 454. 四数相加 II 454. 四数相加 II - 力扣&#xff08;LeetCode&#xff09; 描述 给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 …

华清远见嵌入式学习——春节作业——2.6日

作业要求&#xff1a; 作业答案&#xff1a; 作业代码效果图 作业代码截图 作业代码 #include <myhead.h>//通过无名信号量实现线程间的同步 //定义三个无名信号量 sem_t sem1; sem_t sem2; sem_t sem3;//线程A 打印 Happy void *A(void *arg) {int n 5;while(n--){s…