当前位置: 首页 > article >正文

【重点】【滑动窗口】239. 滑动窗口最大值

题目
也可参考:剑指offer——面试题65:滑动窗口的最大值

class Solution {
    public int[] maxSlidingWindow(int[] nums, int k) {
        int[] res = new int[nums.length - k + 1];
        Deque<Integer> q = new LinkedList<>();
        int inx = 0;
        while (inx < k) {
            if (q.isEmpty()) {
                q.offerLast(nums[inx++]);
            } else {
                while (!q.isEmpty() && q.peekLast() < nums[inx]) {
                    q.pollLast();
                }
                q.offerLast(nums[inx++]);
            }
        }
        res[0] = q.peekFirst(); // inx - k
        while (inx < nums.length) {
            int d = nums[inx - k];
            if (q.peekFirst() == d) {
                q.pollFirst();
            }
            while (!q.isEmpty() && q.peekLast() < nums[inx]) {
                q.pollLast();
            }
            q.offerLast(nums[inx++]);
            res[inx - k] = q.peekFirst();
        }

        return res;
    }
}

http://www.kler.cn/news/157120.html

相关文章:

  • Appium:iOS部署
  • 深度学习在训练时更新和保存最佳训练结果的方法(字典方法,本地保存方法,模型深拷贝方法)
  • selenium中元素定位正确但是操作失败,6种解决办法全搞定
  • 六、ZooKeeper Java API操作
  • 【数据结构】——栈|队列(基本功能)
  • Python字符串模糊匹配工具:TheFuzz 库详解
  • 关于使用百度开发者平台处理语音朗读问题排查
  • Spring-Security取消验证-Get请求接口正常,Post请求报错403
  • java后端技术演变杂谈(未完结)
  • c语言笔记之小项目家庭收支记账软件
  • java synchronized详解
  • ruby安装(vscode、rubymine)
  • 「Qt Widget中文示例指南」如何创建一个计算器?(二)
  • 深度学习(五):pytorch迁移学习之resnet50
  • MySQL安装,建立,导入本地Txt文件
  • 寻找两个有序数组的中位数算法(leetcode第4题)
  • Android 7.1 点击清空全部按钮清空一切运行进程(包括后台在播音乐)
  • 【Linux】进程控制--进程创建/进程终止/进程等待/进程程序替换/简易shell实现
  • CPP-SCNUOJ-Problem P29. [算法课指针] 颜色分类,小白偏题超简单方法
  • 前端---JavaScript篇
  • 【LeeCode】链表总结
  • 大数据之Redis
  • Python按要求从多个txt文本中提取指定数据
  • 卷积神经网络(CNN):艺术作品识别
  • 【算法每日一练]-图论(保姆级教程 篇6(图上dp))#最大食物链 #游走
  • redis的缓存击穿,缓存穿透,缓存雪崩
  • 2023年抗量子加密的十件大事
  • java后端redis缓存缓存预热
  • Ubuntu开机出现Welcome to emergency mode解决办法
  • 【qml入门系列教程】:qml QtObject用法介绍