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

牛客热题:滑动窗口的最大值

📟作者主页:慢热的陕西人

🌴专栏链接:力扣刷题日记

📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言

在这里插入图片描述

文章目录

  • 牛客热题:滑动窗口的最大值
    • 题目链接
    • 方法一:暴力
      • 思路
      • 代码
      • 复杂度
    • 方法二:单调双端队列
      • 思路
      • 代码
      • 复杂度

牛客热题:滑动窗口的最大值

题目链接

滑动窗口的最大值_牛客题霸_牛客网 (nowcoder.com)

方法一:暴力

思路

  • 枚举每个区间的起始
    • 然后遍历每个区间获取最大值放入到ret中

代码

vector<int> maxInWindows(vector<int>& num, int size) {int n = num.size();vector<int> ret;if(size == 0 || size > n) return ret;for(int i = 0 ; i + size - 1 < n; ++i){int max_val = -10010;for(int j = 0; j < size; ++j){max_val = max(max_val, num[i + j]);}ret.push_back(max_val);}return ret;}

复杂度

时间复杂度:O(N * M) ,其中N是数组的长度,M为size的大小

空间复杂度:O(N), 使用了一个N - size长度的数组用来返回答案

方法二:单调双端队列

思路

  • step1:对于数组长度为0,窗口长度为0,或者窗口长度超过num的直接返回空数组
    • step2:遍历数组,维护单调队列,将队列尾部小于当前数组元素的值全部出队。
    • step3:将当前值入队尾部
    • step4:判断当前对头的下标是否超过区间长度的限制,如果超过则出队头
    • step5:当前遍历的数组下标大于等于区间的长度,那么则将对头放入到答案数组
  • step6:遍历结束,返回答案数组即可

代码

    vector<int> maxInWindows(vector<int>& num, int size) {int n = num.size();vector<int> ret; deque<int> dp;if(n == 0 || size == 0 || size > n) return ret;for(int i = 0; i < n; ++i){//除去队列中比当前值小的值while(!dp.empty() && num[dp.back()] < num[i])dp.pop_back();//将当前下标入队列dp.push_back(i);//判断队列头部的下标是否超过序列长度if(i - dp.front() >= size)dp.pop_front();//将最大值放入到答案中if(i + 1 >= size)ret.push_back(num[dp.front()]);}return ret;}

复杂度

时间复杂度:O(N), 遍历了一遍数组,求出了所有滑动窗口的最大值

空间复杂度:O(N),其中开辟了N - size大小的答案数组,和最大为size长度的双端队列

http://www.lryc.cn/news/353668.html

相关文章:

  • Adobe产品安装目录修改
  • 时间(空间)复杂度(结构篇)
  • react记录部署
  • 【计算机毕业设计】基于SSM+Vue的校园美食交流系统【源码+lw+部署文档】
  • 「YashanDB迁移体验官」Mysql生产环境迁移至YashanDB数据库深度体验
  • qmt量化交易策略小白学习笔记第4期【qmt如何获取获取行情数据--内置python使用方法】
  • XXE(XML外部实体注入)
  • kafka 案例
  • 别被“涨价“带跑,性价比才是消费真理
  • GEE深度学习——使用Tensorflow进行神经网络DNN土地分类
  • 死锁示例(python、go)
  • Spring Cloud 面试题(五)
  • 源码编译安装LAMP
  • html5网页-浏览器中实现高德地图定位功能
  • C从零开始实现贪吃蛇大作战
  • 国内外相机在LabVIEW图像处理的对比
  • 第四十五天 | 322.零钱兑换
  • 3D 生成重建011-LucidDreamer 优化SDS过平滑结果的一种探索
  • ES6 笔记04
  • 中间件-------RabbitMQ
  • flink Data Source数据源
  • 网络七层模型与云计算中的网络服务
  • word一按空格就换行怎么办?word文本之间添加空格就换行怎么办?
  • Python 遍历字典的方法,你都掌握了吗
  • MySQL 8.4.0 LTS 变更解析:I_S 表、权限、关键字和客户端
  • LeetCode 124 —— 二叉树中的最大路径和
  • 美甲店会员预约系统管理小程序的作用是什么
  • ..堆..
  • 【LLM多模态】综述Visual Instruction Tuning towards General-Purpose Multimodal Model
  • 探索Linux中的神奇工具:重定向符的妙用