滑动窗口 leetcode_滑动窗口的概念

滑动窗口 leetcode_滑动窗口的概念原题链接给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例 1:输入:nums = [1,3,-1,-3,5,3,6,7], k = 3输出:[3,3,5,5,6,7]解释:滑动窗口的位置 最大值————— —–[1 3 -1] -3 5 3 6 7

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

原题链接

给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。

返回滑动窗口中的最大值。

示例 1:

输入:nums = [1,3,-1,-3,5,3,6,7], k = 3
输出:[3,3,5,5,6,7]
解释:
滑动窗口的位置                最大值
---------------               -----
[1  3  -1] -3  5  3  6  7       3
 1 [3  -1  -3] 5  3  6  7       3
 1  3 [-1  -3  5] 3  6  7       5
 1  3  -1 [-3  5  3] 6  7       5
 1  3  -1  -3 [5  3  6] 7       6
 1  3  -1  -3  5 [3  6  7]      7
示例 2:

输入:nums = [1], k = 1
输出:[1]
示例 3:

输入:nums = [1,-1], k = 1
输出:[1,-1]
示例 4:

输入:nums = [9,11], k = 2
输出:[11]
示例 5:

输入:nums = [4,-2], k = 2
输出:[4]

提示:

1 <= nums.length <= 105
-104 <= nums[i] <= 104
1 <= k <= nums.length

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

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

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


相关推荐

  • laravel-admin 自定义导出表单

    laravel-admin 自定义导出表单

    2021年10月30日
    43
  • Pytest+Allure安装

    Pytest+Allure安装文章目录1.Pytest环境安装2.Window环境下Allure安装3.Linux环境下Allure安装1.Pytest环境安装#在线安装pip3installpytestpip3installpytest-rerunfailurespip3installpytest-htmlpip3installpytest-repeatpip3installpytest-assumepip3installallure-pytest#离线安装-先在线下载pip3

    2022年7月26日
    3
  • idea激活码永久2021【注册码】[通俗易懂]

    idea激活码永久2021【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    41
  • 关于C++ 头文件

    关于C++ 头文件

    2021年9月27日
    49
  • kotlin与java的区别[通俗易懂]

    kotlin与java的区别[通俗易懂]Kotlin简介:Kotlin是一个基于JVM的新的编程语言,由JetBrains开发。Kotlin可以编译成Java字节码,也可以编译成JavaScript,方便在没有JVM的设备上运行。JetBrains,作为目前广受欢迎的JavaIDEIntelliJ的提供商,在Apache许可下已经开源其Kotlin编程语言。Kotlin已正式成为Android官方开发语言。通过上面的简介,我们对Kotlin也有了大概了认知,Kotlin作为新的一种语言,可以运行在JVM上面,那么它

    2022年7月7日
    22
  • 那是什么进程 —— jusched.exe是什么? 它为何运行?「建议收藏」

    那是什么进程 —— jusched.exe是什么? 它为何运行?「建议收藏」       如果你曾经看到任务管理器里有个jusched.exe并很疑惑它究竟是什么,如果你将它关了,那么你很幸运,因为这个进程是负责Java更新的程序,它每个月检查一次Java是否有新的更新,并且一直在那儿浪费内存.       在Windows系统中有个调度任务的功能,由于这个进程每个月才被调度一次,显而易见不是什么重要更新,我不能理解这个进程为什么需要浪费我的内…

    2022年10月23日
    0

发表回复

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

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