剑指offer——面试题65:滑动窗口的最大值

Solution1:

笨蛋方法啊。。

class Solution {
public:vector<int> maxInWindows(const vector<int>& num, unsigned int size) {vector<int> res;if(num.size() == 0 || size <= 0 || num.size() < size)return res;int start = 0, end = size - 1;int max_win = my_max(num, start, end);res.push_back(max_win);start++;end++;while(end < num.size()) {max_win = my_max(num, start, end);res.push_back(max_win);start++;end++;}return res;}int my_max(const vector<int>& num, int start, int end) {int res = INT_MIN;for(int i = start; i <= end; i++) {if(num[i] >= res)res = num[i];}return res;}
};

Solution2:

20180916日重做
参考网址:https://www.nowcoder.com/profile/1710251/codeBookDetail?submissionId=17436906
这个思路真是精巧~

//引用马客(Mark)的解题思路,马客没加注释,我用自己的理解加下注释,希望对你们有用,
//如有错误,见谅,我会及时修改。
//deque s中存储的是num的下标
class Solution {
public:vector<int> maxInWindows(const vector<int>& num, unsigned int size){vector<int> res;deque<int> s;for(unsigned int i=0;i<num.size();++i){while (s.size() && num[s.back()] <= num[i])//从后面依次弹出队列中比当前num值小的元素,同时也能保证队列首元素为当前窗口最大值下标s.pop_back();while (s.size() && i - s.front() + 1>size)//当当前窗口移出队首元素所在的位置,即队首元素坐标对应的num不在窗口中,需要弹出s.pop_front();s.push_back(i);//把每次滑动的num下标加入队列if (size && i >= size - 1)//当滑动窗口首地址i大于等于size时才开始写入窗口最大值res.push_back(num[s.front()]);}return res;}
};

【重点】剑指offer——面试题65:滑动窗口的最大值相关推荐

  1. 剑指Offer - 面试题65. 不用加减乘除做加法(位运算,要看哦)

    1. 题目 写一个函数,求两个整数之和,要求在函数体内不得使用 "+"."-"."*"."/" 四则运算符号. 示例: ...

  2. 剑指offer面试题65. 不用加减乘除做加法(位运算)

    题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用 "+"."-"."*"."/" 四则运算符号. 思路 详见 ...

  3. 剑指Offer - 面试题59 - II. 队列的最大值(deque模拟单调栈)

    1. 题目 请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value.push_back 和 pop_front 的时间复杂度都是O(1). 若队列为空,pop_f ...

  4. 剑指offer 面试题59 - II. 队列的最大值

    请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value.push_back 和 pop_front 的均摊时间复杂度都是O(1). 若队列为空,pop_front ...

  5. 【重点】剑指offer——面试题62:序列化二叉树

    剑指offer--面试题62:序列化二叉树 Solution1: 参考网址:https://www.nowcoder.com/profile/6475323/codeBookDetail?submis ...

  6. 【重点】剑指offer——面试题53:正则表达式匹配

    剑指offer--面试题53:正则表达式匹配 这个属于不是那么好做的题目之一...参考网址:https://www.nowcoder.com/profile/3639006/codeBookDetai ...

  7. 【难题+重点】剑指offer——面试题40:数组中只出现一次的数字

    剑指offer--面试题40:数组中只出现一次的数字 Solution1: 书中展示了很棒的思路: 关于异或的两个性质应该知道: (1) X^X = 0; (2) X^0 = X; class Sol ...

  8. 【重点】剑指offer——面试题36:数组中的逆序对

    剑指offer--面试题36:数组中的逆序对 Solution1: 20180905整理 参考网址:https://www.nowcoder.com/profile/4474567/codeBookD ...

  9. 【重点】剑指offer——面试题27:二叉搜索树与双向链表

    剑指offer--面试题27:二叉搜索树与双向链表 Solution1: 这是书上的代码,要理解好最近几道题,对指针的操作比较多... class Solution { public:TreeNode ...

最新文章

  1. LAN交换机自学习算法
  2. Spring boot外部配置加载顺序
  3. MySQL / 为什么需要主键?主键为什么最好是单调递增的?
  4. python创建变量_Python每天一分钟:给类对象动态新增/删除成员变量和方法(函数)...
  5. python float 精度_浅谈Python里面小数点精度的控制
  6. *【Hihocoder - offer编程练习赛94 - A】最短管道距离(中位数)
  7. 枚举enum、NS_ENUM 、NS_OPTIONS
  8. C#算法设计排序篇之01-冒泡排序(附带动画演示程序)
  9. 一个类可以实现多个接口吗_java中接口的概念
  10. 单证票据识别之关键信息提取
  11. 关于@Autowired的使用:推荐使用构造函数进行注入
  12. endnotex8与9的区别_下载安装EndnoteX8或EndnoteX9,建立数据库并以自己的名字命名。...
  13. LuatOS-HMI概述
  14. 悼念毛星云(浅墨)老师
  15. Arduino学习(九): 写一个Arduino扩展库:音乐播放库,并实现跨平台
  16. 例题 8-10 抄书(Copying Books,UVa 714)
  17. 华为完成首个5G测试;央行搭建区块链平台;苹果将于今夜凌晨举行发布会;蔚来汽车明日在美上市; | 雷锋网9月12日消息...
  18. Swift 周报 第十三期
  19. 一个不是很了解CS的人,该从哪里开始自学CS?
  20. uniapp页面路由传参

热门文章

  1. C# Readonly和Const的区别
  2. python post json参数,Python requests.post方法中data与json参数区别详解
  3. linux命令行学习游戏,如何在Linux命令行中下载GOG游戏
  4. tkinter的可视化拖拽工具_微信小游戏内测可视化工具!“人人都是小程序开发者”的时代到了...
  5. voms下的反射大师_晓星说数学:让数学家折服的艺术大师埃舍尔
  6. 基于react antd的新的tag和Badge的组合使用
  7. crontab简单小结(实用)
  8. 3层b+树索引访问磁盘次数_深入理解MySQL索引底层实现原理丨技术干货
  9. java声明_Java继续声明
  10. passwd命令修改密码_Linux passwd命令–更改用户密码