脚本宝典收集整理的这篇文章主要介绍了力扣 - 剑指 Offer 59 - I. 滑动窗口的最大值,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
剑指 Offer 59 - I. 滑动窗口的最大值
class Solution {
public int[] maxSlidingWindow(int[] nums, int k) {
int length = nums.length;
if (length == 0 || k == 0) {
return new int[0];
}
// Java内置的双端队列
Deque<Integer> queue = new LinkedList<>();
int[] res = new int[length - k + 1];
// 先初始化第一个窗口
for (int i = 0; i < k; i++) {
while (!queue.iSEMpty() && queue.PEekLast() < nums[i]) {
queue.removeLast();
}
queue.addLast(nums[i]);
}
// 获取第一个窗口的最大值
res[0] = queue.peekFirst();
// 移动接下来的窗口
for (int i = k; i < length; i++) {
// 要判断窗口右移时,出队的元素是否是当前最大元素
if (queue.peekFirst() == nums[i-k]) {
queue.removeFirst();
}
// 保持单调队列递减,此时队首的元素就是当前窗口的最大与阿苏
while (!queue.isEmpty() && queue.peekLast() < nums[i]) {
queue.removeLast();
}
queue.addLast(nums[i]);
res[i-k+1] = queue.peekFirst();
}
return res;
}
}
以上是脚本宝典为你收集整理的力扣 - 剑指 Offer 59 - I. 滑动窗口的最大值全部内容,希望文章能够帮你解决力扣 - 剑指 Offer 59 - I. 滑动窗口的最大值所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。