https://leetcode-cn.com/problems/sliding-window-maximum/

AC1

模拟,暴力152ms

class Solution {public:
vector<int> maxSlidingWindow(vector<int>& nums, int k) {vector<int>ans;if(nums.empty())return ans;list<int> window;list<int>::iterator it;for (int j = 0; j < k; ++j) {window.push_back(nums[j]);}for (int i = k; i <= nums.size(); ++i) {//查找最大值it = max_element(window.begin(),window.end());//添加至ansans.push_back(*it);window.erase(window.begin());window.push_back(nums[i]);}return ans;
}
};

AC2

56ms
每隔k个求一次最大值,就是优化求最大值的地方。当前最大值没有出窗口时,只需要比较新插入的值与最大值。

vector<int> maxSlidingWindow(vector<int>& nums, int k) {vector<int>ans;if(nums.empty())return ans;list<int> window;list<int>::iterator it;for (int j = 0; j < k; ++j) {window.push_back(nums[j]);}//查找最大值it = max_element(window.begin(),window.end());int index =distance(window.begin(),it);//添加至ansans.push_back(*it);for (int i = k; i < nums.size(); ++i) {window.erase(window.begin());window.push_back(nums[i]);index--;if(index<0){//出窗口it = max_element(window.begin(),window.end());index =distance(window.begin(),it);ans.push_back(*it);} else{//未出窗口if(nums[i]>(*it)){//新入的大于原最大值index = k-1;//更新最大值位置ans.push_back(nums[i]);it = --window.end();//更新window最大值迭代器的指向,更新为最后一个} else{ans.push_back(*it);}}}return ans;
}

转载于:https://www.cnblogs.com/sunlightstoyou/p/10312268.html

模拟--滑动窗口最大值相关推荐

  1. Suzy找到实习了吗Day 13 | 栈和队列结束啦 239. 滑动窗口最大值,347. 前 K 个高频元素

    day 13 239. 滑动窗口最大值 Python的Deque模块详解 solution 我复制的,好难不会写 347. 前 K 个高频元素(一刷我没有用栈,用的哈希法) solution(hash ...

  2. 栈和队列6:滑动窗口最大值

    问题描述: 题目链接: 滑动窗口最大值 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口内的 k 个数字.滑动窗口每次只向右移动一位. ...

  3. 嗯,查询滑动窗口最大值的这4种方法不错....

    作者 | 王磊 来源 | Java中文社群(ID:javacn666) 转载请联系授权(微信ID:GG_Stone) 本文已收录至 Github<小白学算法>系列:https://gith ...

  4. 【LeetCode】【HOT】239. 滑动窗口最大值(双向队列)

    [LeetCode][HOT]239. 滑动窗口最大值 文章目录 [LeetCode][HOT]239. 滑动窗口最大值 package hot;import java.util.Arrays; im ...

  5. 滑动窗口最大值的golang实现

    给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口 k 内的数字.滑动窗口每次只向右移动一位. 返回滑动窗口最大值 输入: nums = [1 ...

  6. 你还在为查询滑动窗口最大值发愁吗?点开看最高效率解法!

    作者 | 王磊 来源 | Java中文社群(ID:javacn666) 头图 |  CSDN 下载自东方IC 本文已收录至 Github<小白学算法>系列:https://github.c ...

  7. 单调区间之239.滑动窗口最大值

    单调区间 239. 滑动窗口最大值 这个题如果用普通的优先队列是有问题的,因为每次弹出去的不知道是上一个窗口的左边界还是这个窗口里的元素.我们要的是每次只弹出上一个窗口的左边界并且还能弹出最值,所以这 ...

  8. (补)算法训练Day13 | LeetCode150. 逆波兰表达式求值(栈应用);LeetCode239. 滑动窗口最大值(单调队列);LeetCode347. 前K个高频元素(小顶堆,优先级队列)

    目录 LeetCode150. 逆波兰表达式求值 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考 LeetCode239. 滑动窗口最大值 1. 思路 2. 代码实现 3. 复杂度分析 4. ...

  9. CodeTop055 滑动窗口最大值

    滑动窗口最大值 给你一个整数数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧. 你只可以看到在滑动窗口内的k个数字.滑动窗口每次只向右移动一位 返回滑动窗口中的最大值 使用双端队 ...

  10. 直播视频网站源码,滑动窗口最大值

    直播视频网站源码,滑动窗口最大值的相关代码 class Solution { public:vector<int> maxSlidingWindow(vector<int>&a ...

最新文章

  1. The destination folder does not exist or is not writeable
  2. 计算机生物学杂志,基因组学与应用生物学杂志
  3. 【luogu P2169 正则表达式】 题解
  4. 今年的hsctf里遇到了一个比较少见的nds逆向题目,侥幸拿下一血
  5. Android内存分析
  6. 在Arcmap中加载互联网地图资源的4种方法
  7. qc成果报告范例_质量引领创新 扬子江勇夺医药行业QC“十五连冠”
  8. 性能测试界“网红”云性能测试服务,了解一下?
  9. Python 之父重回决策层,未来如何发展?
  10. 功能接口 java8_Java 8功能接口
  11. 【python与数据分析】Python与数据分析概述
  12. 切割钢板计算机软件,板材切割优化软件钢板开料套料软件 V1.0 官方版
  13. java初级程序员学习思路
  14. css绝对定位如何居中?css绝对定位居中的四种实现方法-web前端教程
  15. 《刻意练习》读书笔记
  16. yaourt 查询时Segmentation fault package-query问题解决
  17. gogs搭建git服务教程
  18. NPM Error:gyp: No Xcode or CLT version detected!
  19. 进大厂要背八股文吗?这是我见过最好的回答
  20. 圣斗士星矢服务器维护时间,9月3日服务器维护更新公告

热门文章

  1. try与raise用法
  2. linux修改时区不用重启服务,Linux修改时区不用重启的方法
  3. 区块链 以太坊 solidity 什么时候使用storage、memory
  4. 矿机 矿场 矿池 关系和区别
  5. 数组中常用几种的Arrays方法
  6. oracle 查看数据库启动时间同步,oracle rac CTSS时钟同步模式转换为NTP同步模式的实施记录(4)...
  7. Unity MRTK(二)常见操作
  8. python语法学习第六天--字典
  9. java实现画笔的画圆与矩形功能_JAVA怎么画出一个任意大小的圆形和矩形
  10. mysql 主从 外部连接_集群之MYsql主从服务之引伸出Mysql互为主从(环形结构)外加简单实现自己个人的负载均衡器(3)-阿里云开发者社区...