滑动窗口 leetcode_滑动窗口leetcode

滑动窗口 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/168895.html原文链接:https://javaforall.net

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


相关推荐

  • 牛客:数据库实战—2—查找各个部门当前(to_date=’9999-01-01′)领导当前薪水详情以及其对应部门编号dept_no「建议收藏」

    牛客:数据库实战—2—查找各个部门当前(to_date=’9999-01-01′)领导当前薪水详情以及其对应部门编号dept_no「建议收藏」CREATE TABLE `dept_manager` (`dept_no` char(4) NOT NULL,`emp_no` int(11) NOT NULL,`from_date` date NOT NULL,`to_date` date NOT NULL,PRIMARY KEY (`emp_no`,`dept_no`));CREATE TABLE `salaries` (`…

    2022年6月13日
    28
  • C++ mysql connector使用方法「建议收藏」

    C++ mysql connector使用方法「建议收藏」mysqlconnector的下载  C++操作mysql数据库可以用原生的api,也可以用mysqlconnector,在mysql下载页可以找到下载入口https://dev.mysql.com/downloads/,如下图:在vs2019中的配置头文件  Conneector的使用方式和常规sdk一样,包含头文件,静态库,动态库即可。注意Conneector在8.0之后需要boost支持,在vs中需要配置boost的路径,如下:lib路径  在附加依赖项添加静态库名

    2022年7月15日
    27
  • linux解压rar包的命令[通俗易懂]

    linux解压rar包的命令[通俗易懂]upzipqq.war-d.\

    2022年7月11日
    18
  • SpringBoot集成redis「建议收藏」

    SpringBoot集成redis「建议收藏」今天,日月在这里教大家如何使用springBoot集成redis,说实话比较简单,网上也有大把的教程。先套用一下网上的简介。定义REmoteDIctionaryServer(Redis)是一个由SalvatoreSanfilippo写的key-value存储系统。Redis是一个开源的使用ANSIC语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value…

    2022年6月16日
    25
  • 微信小程序下拉刷新不回弹

    微信小程序下拉刷新不回弹在真机调试微信小程序的时候 微信小程序下拉刷新结束 但是导航栏却并没有回到原位 解决方法 在下拉加载结束之后 调用 wx stopPullDown 方法就好了 wx stopPullDown

    2025年8月22日
    0
  • idea如何进行debug调试断点上被打了个对钩_debug调试教程

    idea如何进行debug调试断点上被打了个对钩_debug调试教程IDEA如何进行debug调试第一步,设断点,打开debug第二步,使用Debug调试的功能键程序调试,相信是所有程序员必经之路,因为程序写出来是不可能没有错误的,当然除了非常简单的一些程序之外。相信大家肯定使用过不同的编译软件,都有调试功能,在功能上大多都是大同小异,没有什么区别的,可能唯一的区别在于调试按钮的样式和快捷键不一样。接下来我将带领大家来了解IDEA调试功能,以Java程序为例。第一步,设断点,打开debug      &n

    2022年10月15日
    2

发表回复

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

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