首页 > 其他分享 >数据结构(四)队列1---以题为例

数据结构(四)队列1---以题为例

时间:2024-03-17 21:12:15浏览次数:27  
标签:窗口 队列 tt --- int hh 数组 滑动 数据结构

给定一个大小为 n≤106的数组。

有一个大小为 k 的滑动窗口,它从数组的最左边移动到最右边。

你只能在窗口中看到 k 个数字。

每次滑动窗口向右移动一个位置。

以下是一个例子:

该数组为 [1 3 -1 -3 5 3 6 7],k 为 3。

窗口位置 最小值 最大值
[1 3 -1] -3 5 3 6 7 -1 3
1 [3 -1 -3] 5 3 6 7 -3 3
1 3 [-1 -3 5] 3 6 7 -3 5
1 3 -1 [-3 5 3] 6 7 -3 5
1 3 -1 -3 [5 3 6] 7 3 6
1 3 -1 -3 5 [3 6 7] 3 7

你的任务是确定滑动窗口位于每个位置时,窗口中的最大值和最小值。

输入格式

输入包含两行。

第一行包含两个整数 n和 k,分别代表数组长度和滑动窗口的长度。

第二行有 n 个整数,代表数组的具体数值。

同行数据之间用空格隔开。

输出格式

输出包含两个。

第一行输出,从左至右,每个位置滑动窗口中的最小值。

第二行输出,从左至右,每个位置滑动窗口中的最大值。

输入样例:

8 3
1 3 -1 -3 5 3 6 7

输出样例:

-1 -3 -3 -3 3 3
3 3 5 5 6 7
#include<iostream>
using namespace std;
const int N=1000010;
int a[N],q[N],hh,tt=-1;

int main(){
    int n,k;
    cin>>n>>k;
    for(int i =0;i<n;i++){
        cin>>a[i];
        if(i-k+1>q[hh])++hh;
        while(hh<=tt&&a[i]<=a[q[tt]])--tt;
         q[++tt]=i;
        if(i+1>=k)cout<<a[q[hh]]<<" ";
    }
    cout<<endl;
    int hh=0,tt=-1;
    for(int i =0;i<n;i++){
        cin>>a[i];
        if(i-k+1>q[hh])++hh;
        while(hh<=tt&&a[i]>=a[q[tt]])--tt;
         q[++tt]=i;
        if(i+1>=k)cout<<a[q[hh]]<<" ";
    }
}

 

标签:窗口,队列,tt,---,int,hh,数组,滑动,数据结构
From: https://www.cnblogs.com/Ghost-Knight/p/18079187

相关文章

  • 3-4-帮助命令使用
    3-4帮助命令使用方法一:man命令按q退出 方法二:命令-help 3-5开关机命令及7个启动级别常用的几个关机,重启命令shutdowninitrebootpoweroff3.5.1关机命令之-----shutdown作......
  • 树与二叉树(数据结构)
    本篇博客讲解树与二叉树,后续会继续讲解堆——————————————————————1.树概念及结构1.1树的概念 树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的......
  • Mybatis-plus构建wrapper条件时出现索引越界异常Caused by: org.apache.ibatis.except
    项目场景:学习springboot整合mybatis-plus时通过构建器执行相关操作@AutowiredBookMappermapper;@Testvoidtest(){QueryWrapper<Book>wrapper=newQueryWrapper<>();wrapper.select("id","name","press")//只查询前三......
  • 数据结构与算法-图
    引言        在计算机科学领域,数据结构和算法是程序员工具箱中的两大瑰宝。其中,图(Graph) 是一种极其重要的非线性数据结构,它以节点和边的概念描述实体间复杂的关系网络。本文将对图的数据结构进行详尽解析,探讨其基本概念、操作以及实际应用场景。一、什么是图?   ......
  • BcLinux-Redis-集群(cluster)模式安装配置
    IP:192.168.0.28081、8082IP:192.168.0.3 8081、8082IP:192.168.0.4 8081、80821、三个节点同样操作[root@server-1setup]#yuminstalltcl或者:wgethttp://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gztarxzvftcl8.6.1-src.tar.gz-C/home/local/cd/home/loc......
  • 3-3-系统时间管理
    3.3.1两种管理时间在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟;系统时钟则是指kernel中的时钟;所有Linux 相关指令与函数都是读取系统时钟的设定,当Linux启动时,系统时钟会去读取硬件......
  • Android开发笔记[13]-图案密码
    摘要输入图案密码123跳转到关于页面.关键信息AndroidStudio:Iguana|2023.2.1Gradle:distributionUrl=https://services.gradle.org/distributions/gradle-8.4-bin.zipjvmTarget='1.8'minSdk21targetSdk34compileSdk34开发语言:Kotlin,JavandkVersion='21.1.6......
  • 分层联邦学习①-SHARE
    SHARE:ShapingDataDistributionatEdgeforCommunication-EfficientHierarchicalFederatedLearning摘要:联合学习(FL)可以在移动节点上实现分布式模型训练,而无需共享对隐私敏感的原始数据。然而,为了实现高效的FL,一个重大挑战是提交模型更新的通信开销过高,因为通常需要频繁......
  • 学了 Python 但又感觉没学 Python 不如重学 Python - day2(基础内置函数与变量引用的详
    目录1、int函数2、bin、oct、hex 函数3、type函数4、complex函数5、布尔运算6、chr与ord函数7、max与min函数8、eval函数9、变量对象引用10、对象的垃圾回收11、变量命名规则12、序列赋值13、增强赋值1、int函数按n进制将整数字符串转换为......
  • 信号处理--基于gumbel-softmax方法实现运动想象分类的通道选择
    目录背景亮点环境配置数据方法结果代码获取参考文献背景基于Gumbel-softmax方法EEG通道选择层的PyTorch实现。该层可以放置在任何深度神经网络架构的前面,以共同学习给定任务和网络权重的脑电图通道的最佳子集。这一层由选择神经元组成,每个神经元都使用输入通......