滑动窗口求最大值 leetcode 59

滑动窗口求最大值 leetcode 59滑动窗口最大值问题利用递减队列实现Dequeuedequeue=newLinkedList<>();递减队列方法说明peekFirst获取队头元素pollFirsr队头元素出队offerLast==add在队尾插入新元素publicint[]maxSlidingWindow(int[]nums,intk){if(nums.length==0){returnnewint[0];}

大家好,又见面了,我是你们的朋友全栈君。

滑动窗口最大值问题
利用递减队列实现
Dequeue dequeue = new LinkedList<>();
递减队列方法说明
peekFirst获取队头元素
pollFirsr队头元素出队
offerLast == add在队尾插入新元素

    public int[] maxSlidingWindow(int[] nums, int k) {
        if(nums.length==0){
            return new int[0];
        }
        Deque<Integer> deque = new LinkedList<>();
        for (int i = 0; i <k ; i++) {
            while(!deque.isEmpty() && nums[i]>=nums[deque.peekLast()]){
                deque.pollLast();
            }
            deque.offerLast(i);
        }
        int len = nums.length;
        int[] res = new int[len-k+1];
        res[0] = nums[deque.peekFirst()];
        for (int i = k; i <len ; i++) {
            while(!deque.isEmpty() && nums[i]>=nums[deque.peekLast()]){
                deque.pollLast();
            }
            deque.offerLast(i);
            while (i-deque.peekFirst()>=k){
                deque.pollFirst();
            }
            res[i-k+1] = nums[deque.peekFirst()];
        }
        return res;
    }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158563.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 零基础学Java(6)控制流程

    零基础学Java(6)控制流程控制流程与任何程序设计语言一样,Java使用条件语句和循环结构确定控制流程。块作用域我们首先要了解块(block)的概念。块是指由若干条Java语句组成的语句,并用一对大括号括起来。块确定了变

    2022年8月7日
    8
  • matlab灰度最大值和最小值_matlab灰度直方图

    matlab灰度最大值和最小值_matlab灰度直方图这里有两个版本的泛洪填充算法:第一个,更简单的一个包含两个未定义的变量,但这是一个工作版本:importnumpyasnpimportscipyasspimportscipy.ndimagedefflood_fill(test_array,h_max=255):input_array=np.copy(test_array)el=sp.ndimage.generate_bin…

    2022年9月12日
    0
  • Ubuntu 20.04 CUDA&cuDNN安装方法[通俗易懂]

    Ubuntu 20.04 CUDA&cuDNN安装方法[通俗易懂]下载cuda输入nvidia-smi命令查看支持的cuda版本如果无法查看,则说明尚未安装nvidia驱动,点击附加驱动,选择对应版本的驱动即可自动下载。从https://developer.nvidia.com/cuda-toolkit-archive下载对应版本的cuda,选择18.04的版本即可。gcc降级Ubuntu20.04自带的gcc版本为9.7….

    2022年6月13日
    74
  • 深度学习的深度和宽度的理解[通俗易懂]

    深度学习的深度和宽度的理解[通俗易懂]文章目录1.深度1.1为什么加深可以提升性能1.1.1更好拟合特征1.1.2网络更深,每一层要做的事情也更加简单1.2如何定量评估深度与模型性能1.2.1直接法1.2.2间接法1.3加深就一定更好吗?1.3.1加深带来的优化问题1.3.2网络加深带来的饱和2.宽度2.1为什么需要足够的宽度2.2网路到底需要多宽2.2.1网络宽度的下限在哪?2.2.2网络宽度对模型性能的影响2.2.3网络宽度和深度哪个更重要?2.3如何更加有效地利用宽度2.3.1提高每一层的通道的利用率

    2022年5月11日
    66
  • RPN网络通俗理解

    RPN网络通俗理解【提特征】RPN网络前面是一个提特征的网络,比如VGG,Res等,传给RPN网络的是一个特征图,其实也就是一个tensor比如用ZF网络(论文里面用的)输出特征图:13*13*256【RPN】拿到模型的特征,RPN网络首先加了一个3*3*256*256的卷积层(其实不是很清楚为什么加,可能是为了扩大感受野)这样就会得到11*11*256的输出,前面11*11是图形矩阵,其中每一个点在原图中都是一个…

    2022年6月23日
    34
  • 使用pycharm安装包失败后,应该怎么办?

    使用pycharm安装包失败后,应该怎么办?用pycharm进行安装第三方包的时候,一些情况下会出现安装失败(具体怎么安装搜一下,教程很全,但这不是想说的重点)。有时候是因为pip版本较低,升级一下即可,但有时候就是安装不上,原因查了一下,有的博主说是pip不支持断点续传,也有的说是版本路径问题。但是不论如何,这个问题有解决的方法,也是迫不得已的办法。第一步:去官网下载对应的安装包,网址如下:这是网址至于应该安装什么样的包,最简单…

    2022年5月13日
    64

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号