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

【力扣hot100题】(010)滑动窗口最大值

在前几天笔试的时候做到了差不多的,就是将元素按顺序排,每次加入新元素时检查前面元素是否大于(小于)该元素,这样就能保持队列的单调性,然后要取最大(最小)值的时候直接取最前面的元素就行。(这道题每次取出元素前要判断队前元素序号是否超出滑动窗口前端)

需要用到一个新的东西deque(双端队列),笔试时使用的是stack(栈)。

class Solution {
public:
    vector<int> maxSlidingWindow(vector<int>& nums, int k) {
        vector<int> result;
        deque<int> mp;
        int high=0;
        for(high;high<k;high++){
            while(!mp.empty()&&nums[high]>=nums[mp.back()]) mp.pop_back();
            mp.push_back(high);
        }
        result.push_back(nums[mp.front()]);
        for(high;high<nums.size();high++){
            while(!mp.empty()&&nums[high]>nums[mp.back()]) mp.pop_back();
            mp.push_back(high);
            while(mp.front()<=high-k) mp.pop_front();
            result.push_back(nums[mp.front()]);
        }
        return result;
    }
};

总之还是学到了新东西的,以前确实很少用过这个。

原文地址:https://blog.csdn.net/s478527548/article/details/146603258
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/613357.html

相关文章:

  • 项目接入通义千问 api 接口实现步骤详解
  • 基于ssm的养老院综合服务系统
  • 项目-苍穹外卖(十五) Apache ECharts+数据统计
  • Blender绘图——旋转曲线(以LCP与RCP为例)
  • Linux系统编程 | 线程的基本概念
  • FLEXlm如何通过web调用
  • Go服务开发高手课(极客讲堂)
  • 为什么大模型在 OCR 任务上表现不佳?
  • 0.雷达信号
  • 什么是uv 和pip的区别是什么
  • leetcode131-分割回文串
  • 构建大语言模型应用:句子转换器(Sentence Transformers)(第三部分)
  • 手机零售行业的 AI 破局与创新降本实践 | OceanBase DB大咖说
  • 探索:如何构建一个自我的AI辅助的开发环境?
  • 淘宝API+爬虫混合方案:合规采集历史价格与评价数据
  • Axios核心原理
  • 平台清洗行动:AI浏览器用户生存率高出传统方案17倍
  • ffmpeg(1)-图片相关知识
  • uniapp中的本地存储API
  • uniapp自定义圆形滑杆