【LeetCode: 239. 滑动窗口最大值 + 滑动窗口 + 单调队列】

力扣239 - 滑动窗口的最大值【单调队列的原理】 对应力扣239 - 滑动窗口的最大值,带你搞懂单调队列的实现原理 阅读详情

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,优快云-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述

在这里插入图片描述

🚩 题目链接

⛲ 题目描述

给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。

返回 滑动窗口中的最大值 。

示例 1:

输入:nums = [1,3,-1,-3,5,3,6,7], k = 3
输出:[3,3,5,5,6,7]
解释:
滑动窗口的位置 最大值


[1 3 -1] -3 5 3 6 7 3
1 [3 -1 -3] 5 3 6 7 3
1 3 [-1 -3 5] 3 6 7 5
1 3 -1 [-3 5 3] 6 7 5
1 3 -1 -3 [5 3 6] 7 6
1 3 -1 -3 5 [3 6 7] 7
示例 2:

输入:nums = [1], k = 1
输出:[1]

提示:

1 <= nums.length <= 105
-104 <= nums[i] <= 104
1 <= k <= nums.length

🌟 求解思路&实现代码&运行结果


⚡ 滑动窗口 + 单调队列

🥦 求解思路
  1. 题目已经告诉我们这是一个窗口大小固定为k的滑动窗口,但是我们如何能够快速的找到每一个窗口内的最大值呢?
  2. 我们维护一个单调队列,这个队列是双端,从头到尾是单调递减的。
  3. 每次,我们需要先将队列中队尾的元素与要加入的元素比较,如果是小于要加入的元素的,直接弹出,直到满足要求,循环结束后,然后加入当前元素的下标位置。
  4. 加入元素后,我们就需要判断,当前队列中的元素是否超过k个,如果超过,直接弹出队首的元素。
  5. 最后,收集答案。如果此时窗口的元素是k个,收集答案。
  6. 有了基本的思路,接下来我们就来通过代码来实现一下。
🥦 实现代码
class Solution {
    public int[] maxSlidingWindow(int[] nums, int k) {
        int n = nums.length;
        int[] ans = new int[n - k + 1];
        Deque<Integer> queue = new LinkedList<>();
        for (int right = 0; right < n; right++) {
            while (!queue.isEmpty() && nums[queue.getLast()] <= nums[right]) {
                queue.pollLast();
            }
            queue.addLast(right);
            if (right - queue.getFirst() >= k) {
                queue.pollFirst();
            }
            if (right - k + 1 >= 0) {
                ans[right - k + 1] = nums[queue.getFirst()];
            }
        }
        return ans;
    }
}
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

使用单调队列解决 “滑动窗口最大值” 问题 到这里,单调队列和单调栈的内容都讲完了。和单调栈一样,除了典型例题之外,大部分题目会将 “滑动窗口最大值素” 的语义隐藏在题目细节中,需要找出题目的抽象模型或转换思路才能找到,这是难的地方。还是那句话,学习单调队列和单调栈,应该当作学习单调性的思想在这两种数据结构上的应用。你觉得呢?单调队列难度题解239. 滑动窗口最大值Hard【题解】918. 环形子数组的最大和Medium【题解】面试题59 - II. 队列的最大值Medium【题解】 阅读详情

相关推荐

winpcap无法安装提示新版本已经安装解决办法

问题显示如下该问题会导致ensp里的云识别不到网卡可能是因为之前安装了npcap,而且安装时勾选了第四个选项导致无法安装,需要完全卸载npcap解决办法:办法一:在控制面板的程序与卸载里面卸载npcap和winPcap,然后再安装winPcap,如果搜不到往下看办法二:在C:\Windows\SysWOW64目录下搜索wpcap.dll和packet.dll并重命名为wpcap.dll.old和packet.dll.old办法三:如果搜不到这两个文件需要安装win10Pcap才能找到这两个文件下载地址:Wi

qq_73202377的博客 3万+

【滑动窗口最大值】——单调队列

单调队列解决滑动窗口最大值问题

周小兔的大管家的博客 330

SQLSTATE58030

在优化一条SQL的时候遇到了执行错误 gtlions =# select t1.telnumber,t2.ua,t2.url,t1.apply_name,t2.apply_name from tb1 t1 gtlions -# left outer join tb2 t2 on t1.sid = t2.ipsid gtlions-# where t1.sum_date=20141128 a

Gtlions Tracker 3660

滑动窗口最大值:单调队列

​单独队列本质还是一个队列,只是我们规定这个队列是一个单调递减或者单调递增队列!⚜️单调递减和递增是什么意思呢❓❓❓​ 这里以单调递减为例,因为和我们这道题比较符合!我们举一个数学上面的例子y = ax + b,我们知道递减就是函数在某个区间上面的 y 随着 x 的增大,而不断的减小或者相等,但是如果我们定义它为单调递减,那么这个函数则变成在整个区间上面都是 y 随着 x 的增大而不断的减小!​。

lirendada的博客 1055

Python爬虫:爬取健身平台运动数据(跑步、骑行轨迹)

通过分析这些运动数据,用户能够了解自己的运动趋势、运动成绩,并作出相应的调整。通过使用Strava的API,我们成功地获取了用户的运动活动信息和运动轨迹数据,并进行了存储与可视化。Strava的API提供了丰富的数据接口,能够通过OAuth2认证获取用户的运动数据,包括历史数据、运动轨迹等信息。Strava的API还提供了获取活动轨迹数据的接口,返回的数据格式通常是GeoJSON格式,适用于地图可视化。随着大数据技术的发展,运动数据的分析和可视化为个人健康管理、运动训练计划的优化等提供了强大的支持。

2201_76125261的博客 1076

Hindsight 内存爆炸 4 个词排查清单:9,284 条 6 成是 SSH 调试日志——Agent 标签系统的实战复盘

9,284 条记忆里 66% 是 SSH 调试日志。4 个标签被滥用=0 区分度。3 个 entity_labels + retain_mission + retain_every_n_turns 配置把噪声压回 5%——附 PATCH 脚本和实测前后数据。

Starry-SkyJing的博客 57

算法基础篇:(二十二)数据结构之单调队列:滑动窗口问题的 “最优解” 神器

本文深入解析单调队列这一高效解决滑动窗口问题的数据结构。首先介绍单调队列的核心特性:双端操作、严格单调性和存储下标机制,通过面试官选人的生动比喻阐明其淘汰无效元素的原理。接着详细拆解维护单调性的入队和出队操作步骤,并配以可视化演示。文章提供滑动窗口最大值/最小值的经典模板题完整代码实现,重点解析加速输入输出、下标存储等关键技巧。最后通过洛谷P2251质量检测题展示实战应用,并总结存储数值而非下标、单调性维护不彻底等常见坑点,帮助读者从原理到实践全面掌握单调队列。

2301_79248256的博客 1866

电子设计(1)二极管防电源反接电路

二极管经常用来作电源防反接保护,所需器件少,电路简单。

记得诚 1万+

【算法入门】LeetCode 239. 滑动窗口最大值:Java与JavaScript双解法详解|单调队列的精妙运用力扣239题详解:滑动窗口最大值(Java & JavaScript 双语言实现)

通过本文,我们学习了如何使用Java和JavaScript解决滑动窗口最大值问题。使用双端队列来维护窗口中的最大值是一种有效的方法,它允许我们在O(n)的时间复杂度内完成整个数组的遍历。希望这篇文章能帮助你更好地理解并掌握这一知识点。好的,我很乐意为你提供详细的解答和博客内容。以下是一篇新手入门博客,包含Java和JavaScript的解答以及相关知识点的详细介绍。博客标题: 从零开始学习力扣题 239. 滑动窗口最大值目录:问题描述Java解答2.1 使用双端队列JavaScript解答。

南北极之间 1180

【MTK平台】【wpa_supplicant】关于wpa_supplicant/p2p_supplicant.c文件的介绍

本文主要介绍external/wpa_supplicant_8/wpa_supplicant/p2p_supplicant.c 这个文件这个文件里面有个核心的方法就是。

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 725

【matlab】基于 Simulink 的空调恒温控制系统仿真建模

本文介绍了基于Simulink的空调恒温控制系统仿真建模方法。系统采用PID控制算法,通过传感器测量温度、控制器计算信号、执行器调节功率来实现恒温控制。文章详细阐述了Simulink模型搭建步骤,包括PID控制器、房间热力学特性模拟等模块的实现,并提供了测试流程和多种实际部署场景。该方法可有效验证控制算法性能,优化系统设计,适用于家用、商用、工业及汽车空调系统。未来可结合智能算法和节能优化技术进一步提升系统性能。

走向CTO的路上... 920

【力扣Problem: 239. 滑动窗口最大值】从multiset到大根堆与单调队列,三种方法处理滑动窗口最大值

摘要: 题目要求在滑动窗口问题中找出每个窗口的最大值。给出三种解法: multiset法:利用有序集合维护窗口元素,通过rbegin()获取最大值。时间复杂度O(N log N),因集合操作有log开销。 优先队列法:使用大顶堆存储元素及其下标,延时删除窗口外的元素。堆顶即为当前最大值,均摊时间复杂度O(N log N)。 单调队列法:维护递减的双端队列,队首始终是窗口最大值。新元素入队时移除较小元素,保证队列单调性。最优解,时间复杂度O(N)。 关键点:解法三通过"备胎理论"(新较大元

通过输出内容提升自己 1103

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【LeetCode刷题日记】239.滑动窗口最大值:单调队列解法(困难)

这篇文章详细讲解了滑动窗口最大值问题的解决方案。通过分析暴力解法和堆结构的局限性,提出了使用单调队列的优化方法。文章深入剖析了单调队列的设计原理,包括pop和push操作规则,以及如何维护队列单调递减的特性。通过示例数组[1,3,-1,-3,5,3,6,7]和k=3的动画演示,直观展示了窗口滑动时队列的变化过程。最后给出了完整的Java代码实现,包括处理边界条件和计算窗口个数的数学推导。这种单调队列的解法将时间复杂度优化到O(n),是处理滑动窗口最大值问题的高效方案。

任岁月风干理想再也找不回真的我 1122

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

LeetCode239. 滑动窗口最大值解法心得:单调队列的奥秘

滑动窗口最大值问题是单调队列的经典应用。当遇到需要在滑动窗口中快速查找最大值或最小值的问题时,都可以考虑使用单调队列来优化。核心思想:通过维护一个单调队列,避免重复比较,将时间复杂度从 O(nk) 降低到 O(n)。掌握单调队列的思想后,类似的问题如滑动窗口最小值、区间最大值等都可以迎刃而解。

Musennn的博客 981

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

代码随想录算法训练营第十一天|150. 逆波兰表达式求值 - 力扣(LeetCode),239. 滑动窗口最大值 - 力扣(LeetCode),347. 前 K 个高频元素 - 力扣(LeetCode

力扣算法

LXY999222的博客 877

LeetCode239之滑动窗口最大值(相关话题:单调队列)

文章摘要:本文介绍了如何利用单调队列在O(n)时间复杂度内解决滑动窗口最大值问题。通过维护一个单调递减的双端队列,可以高效获取每个窗口的最大值。关键点包括:1) 队尾移除比新元素小的值保持单调性;2) 队头移除离开窗口的旧元素;3) 处理重复值时建议存储下标而非数值。给出了Java和Python的实现代码,并讨论了面试中可能遇到的实现细节问题。该方法克服了暴力解法O(nk)的时间复杂度限制,适用于需要高效计算滑动窗口统计量的场景。

数据与算法架构提升之路专栏 791

单调队列 | 滑动窗口 | 动态规划:力扣239. 滑动窗口最大值

1、题目描述: 2、题解: 方法1:单调栈 方法2:滑动窗口 3、复杂度分析:

weixin_42042056的博客 433

【力扣】239:滑动窗口最大值 | 维护单调队列

题目描述 给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。 输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3 输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值 --------------- ----- [1 3 -1] -3 5 3 6 7

Heart_for_Ling的博客 482

单调队列入门 力扣239:滑动窗口最大值

遍历数组,窗口长度>=3时才开始记录答案,[2,1,4]中显然最大值是4,若窗口继续向右移动,最大值也不可能取到前面的2和1,因为后面要包含2和1,就必须包含4,所以如果要维护滑动数组的最大值,可以直接忽略前面比4小的2和1;窗口右移,变为[1,4,2]此时2后面有可能成为最大值,所以要加入维护的队列中,继续右移窗口为[4,2,3],同理可以把3前面的2从维护队列去掉,因为2之后不可能再成为最大值了。的,因为每加入一个可能成为最大值的元素,就可以把前面比它小的元素删除。可以发现这样维护出来的。

m0_74136087的博客 255

leetcode第239题: 滑动窗口最大值——单调队列解法

单调队列 维护数据的单调性,队首元素超出窗口范围就出队,队首元素永远维护区间最值 不要跟二叉推搞混了,二叉堆是维护集合最值,单调队列是维护区间最值 使用单调队列求解 var maxSlidingWindow = function (nums, k) { let q = []; //维护单调队列 let ret = []; //结果数组 for(let i=0;i<nums.length;i++){ // 维护单调队列入队操作 while(q.len

509

「leetcode」C++题解:239. 滑动窗口最大值,单调队列的经典题目

使用单调队列的经典题目

代码随想录 457

力扣题239:滑动窗口最大值:优先队列,单调队列

滑动窗口最大值 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。 示例 1: 输入:nums = [1,3,-1,-3,5,3,6,7], k = 3 输出:[3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值 [1 3 -1] -3 5 3 6 7 3 1 [3 -1 -3] 5 3 6 7 .

dddgggd的博客 295

LeetCode题解:239. 滑动窗口最大值,单调队列,JavaScript,详细注释

原题链接:https://leetcode-cn.com/problems/sliding-window-maximum/ 解题思路: 参考了【视频解析】 双端队列滑动窗口最大值、Intuitive JavaScript Solution with Monotonic Queue。 每次滑动窗口时,将移出窗口的值移除队列 将新进入窗口的值存入队列,同时将队列中比移入值小的元素都移除,这个操作会保证队列都是从大到小排列。 队列的第一个值始终是当前窗口中最大值,每次循环将其存入结果数组即可。 /** *

Lee Chen的博客 232

python实现leetcode239题:滑动窗口最大值 基于单调队列实现线性时间,代码更新到几行,注释清晰

题目描述 给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。 示例: 输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3 输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值 [1 3 -1]...

weixin_42307036的博客 1648

力扣hot100:239.滑动窗口最大值(优先队列/单调队列)

单调队列,优先队列

m0_63997099的博客 791
上一篇: 【LeetCode: 292. Nim 游戏+ 博弈问题】
下一篇: 【LeetCode: 73. 矩阵置零 + 矩阵】
硕风和炜
硕风和炜 优质创作者: Java技术领域 优质创作者: Java技术领域
博客等级 码龄7年 2万+粉丝 1024原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硕风和炜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值