python剑指offer系列滑动窗口的最大值

news/2024/5/20 6:30:58 标签: 剑指offer, python, 滑动窗口, 队列

给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5};针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1},{2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1},{2,3,4,2,[6,2,5],1}, {2,3,4,2,6,[2,5,1]}。



思路:


维护一个窗口为size的双向队列,队头一直保持最大的元素,队尾则一直更新,o(n)的复杂度,当遍历下标超出窗口时,则把超出窗口的下标去除

python">class Solution:
    def maxInWindows(self, num, size):
        que = []
        que.append(0)
        list1 = []
        if len(num) == 0 or size <= 0 or num == None:
            return list1
        if size == 1 :
            list1.append(num[que[0]])
        for i in range(1, len(num)):
            if i - size >= que[0]:
                que.pop(0)
            while (len(que) != 0 and num[i] > num[que[-1]]):
                que.pop(-1)
            que.append(i)
            if i >= size - 1:
                list1.append(num[que[0]])
        return list1
这里采用python解法,用一个列表则可以模拟双向队列


http://www.niftyadmin.cn/n/1870372.html

相关文章

ThreadLocal的理解和使用

1.ThreadLocal初步 早在JDK 1.2的版本中就提供java.lang.ThreadLocal&#xff0c;ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 ThreadLocal很容易让人望文生义&#xff0c;想当然地认为是一个“本地线程”。…

python剑指offer系列层序遍历二叉树

class Solution:# 返回从上到下每个节点值列表&#xff0c;例&#xff1a;[1,2,3]def PrintFromTopToBottom(self, root):lists []if root None:returnque1 []que1.append(root)while que1:data que1.pop(0)if data.left ! None:que1.append(data.left)if data.right ! Non…

Content-Type引发的服务端收不到HTTP请求参数的问题

问题现象&#xff1a; 前端POST请求参数已经传过来了&#xff0c;Java后端Debug也能进到请求里&#xff0c;可就是取不到请求参数。 用Chrome 开发者工具可以看到请求的不同&#xff1a; 可以看到请求参数一个在Form Data中&#xff0c;一个在Request Payload中&#xff0c;而…

python剑指offer系列树的子结构

题目&#xff1a;输入两棵二叉树A&#xff0c;B&#xff0c;判断B是不是A的子结构。&#xff08;ps&#xff1a;我们约定空树不是任意一个树的子结构&#xff09;解法&#xff1a; 对于两棵二叉树来说&#xff0c;要判断B是不是A的子结构&#xff0c;首先第一步在树A中查找与B根…

C语言王国探险记之函数的简单概念

王国探险记系列 文章目录&#xff08;5&#xff09; 目录 王国探险记系列 文章目录&#xff08;5&#xff09; 前言 一&#xff0c;函数的基本概念 二&#xff0c;调用外部函数和main()函数区别 2.1如果我们将函数的定义放到后面&#xff0c;可不可以呢&#xff1f; 总结…

JavaWeb 三大器--Listener、Filter 和Interceptor 总结

说明&#xff1a;web.xml的加载顺序是&#xff1a;【Context-Param】->【Listener】->【Filter】->【Servlet】&#xff0c;而同个类型之间的实际程序调用的时候的顺序是根据对应的Mapping的顺序进行调用。 详细介绍&#xff1a;web.xml加载顺序与web.xml常用节点解析…

python剑指offer系列二叉树中和为某一值的路径

题目&#xff1a;输入一颗二叉树和一个整数&#xff0c;打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。思路&#xff1a; 其实就是深度优先遍历&#xff0c;到达叶子结点时判断target是否为零&#xff…

python剑指offer系列复杂链表的复制

题目&#xff1a; 输入一个复杂链表&#xff08;每个节点中有节点值&#xff0c;以及两个指针&#xff0c;一个指向下一个节点&#xff0c;另一个特殊指针指向任意一个节点&#xff09;&#xff0c;返回结果为复制后复杂链表的head。&#xff08;注意&#xff0c;输出结果中请不…