美文网首页
剑指offer学习笔记:8.5 栈和队列

剑指offer学习笔记:8.5 栈和队列

作者: 小逗比儿 | 来源:发表于2020-07-12 21:50 被阅读0次

面试题65:滑动窗口的最大值

给定一个数组和滑动窗口的大小,请找出所有滑动窗口中的最大值。例如,如果输入数组是{2,3,4,2,6,2,5,1}以及窗口大小3,那么一共有6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}
leetcode链接 https://leetcode-cn.com/problems/sliding-window-maximum/

解题思路:
思路1:用滑动窗口可以看做是一个队列。当当前窗口滑动时,处于窗口的第一个元素被删除,同时在窗口的末尾添加一个新元素。这个符合队列先进先出的原则。如果能从队列中找到最大值,这个问题就解决了。
在面试题21中,我们实现了一个可以用o(1)时间获得最小值的栈。在面试题7中,我们实现了用两个栈实现一个队列。综上,可以用两个栈实现队列,并通过o1时间获得队列最大值,因此总体复杂度降低为on。

思路2:我们不把滑动窗口中每个值都存入队列,只把有可能成为滑动窗口最大值的值存在队列中。
在存入下一个数字小标之前,判断队列中已有数字是否小于待存入数字。如果已有数字小于待存入数字,这些数字已经不可能是滑动窗口最大值,因此他们将依次从队列尾部删除。将新数据存入。

相关文章

  • 剑指offer学习笔记:8.5 栈和队列

    面试题65:滑动窗口的最大值给定一个数组和滑动窗口的大小,请找出所有滑动窗口中的最大值。例如,如果输入数组是{2,...

  • 用两个栈实现队列

    《剑指offer》刷题笔记。如有更好解法,欢迎留言。 关键字:栈 队列 题目描述: 用两个栈来实现一个队列,完成队...

  • LeetCode | 面试题09. 用两个栈实现队列【剑指Off

    LeetCode 面试题09. 用两个栈实现队列【剑指Offer】【Easy】【Python】【栈】【队列】 问题...

  • 剑指Offer(五)

    剑指Offer(五) 用两个栈实现队列 题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列...

  • 两个栈实现一个队列

    《剑指offer》面试题9:两个栈实现队列 题目:用2个栈实现一个队列,完成队列的push和pop操作 思路:栈1...

  • 《剑指Offer》栈和队列

    1 基本概念 栈:后进先出队列:先进先出 栈和队列是计算中使用最广泛的缓存结构,其使用环境可以总结如下: 计算过程...

  • 两个队列实现一个栈

    《剑指offer》面试题9(相关题目):两个队列实现一个栈。 思路:入栈:如果队列1和队列2都为空,则将元素放入队...

  • 剑指offer----队列和栈

    用两个栈实现队列的头部出队,尾部入队操作: 30、包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得...

  • Leetcode-232Implement Queue usin

    232. Implement Queue using Stacks && 剑指offer-用两个栈实现队列 Imp...

  • 用两个栈实现队列,用两个队列实现堆栈

    参考:剑指Offer面试题7(Java版):用两个栈实现队列与用两个队列实现栈 用两个栈实现队列stack1作为入...

网友评论

      本文标题:剑指offer学习笔记:8.5 栈和队列

      本文链接:https://www.haomeiwen.com/subject/zxqpqktx.html