当前位置: 首页 > news >正文

哈希表应用(map,set共同作用)

码蹄集OJ-区间最大值

#include<bits/stdc++.h> 
using namespace std;
map<int,int>m;
set<int>s;
int main( )
{int n,k;cin>>n>>k;int arr[n];for(int i=0;i<n;i++){cin>>arr[i];}for(int i=0;i<k;i++){m[arr[i]]++;}for(int i=0;i<k;i++){if(m[arr[i]]==1){s.insert(arr[i]);}}if(s.empty()){cout<<"-1 ";}else{cout<<*s.rbegin()<<" ";}for(int i=k;i<n;i++){if(m[arr[i-k]]==1){s.erase(arr[i-k]);}if(m[arr[i-k]]==2){s.insert(arr[i-k]);}m[arr[i-k]]--;if(m[arr[i]]==0){s.insert(arr[i]);}if(m[arr[i]]==1){s.erase(arr[i]);}m[arr[i]]++;if(s.empty()){cout<<"-1 ";}else{cout<<*s.rbegin()<<" ";}}return 0;
}

map<int,int>m是 一个把整数映射到整数的、自动排序的字典

键与值的类型都为int,键指的是数字,值指的是数字出现的个数。

set<int>s是 一个只存整数、自动去重并自动升序排序的集合

这道题就是将滑动窗口大小为k的数字与个数存入map中,再将map中值为1的数字存入set中。

输出:在set为空时输出-1,在不为空时输出:

        cout<<*s.rbegin()<<" ";

接下来的问题就是如何实现这个滑动窗口,先将0到k的数字和个数存入map中,再通过向后滑动判断出去的数字与进入的数字,根据不同情况更改set中的值,但别忘了判断结束后也要更改map中的值。

http://www.dtcms.com/a/301490.html

相关文章:

  • Dify 深度解析:开启 AI 应用开发的无限可能
  • VUE3(四)、组件通信
  • 1439-素数环2
  • 基于深度学习的图像分割:使用DeepLabv3实现高效分割
  • QT6 源,七章对话框与多窗体(17)用于辅助多文档 MDI 窗体设计 QMdiArea 的类 QMdiSubWindow:
  • [10月考试] B
  • 3.5-非关系型数据库-反规范化-sql语言
  • 市电有电检测电路
  • [硬件电路-96]:什么是闭环反馈?什么是闭环正反馈控制?什么是闭环负反馈控制?
  • RK3568 Linux驱动学习——Linux驱动开发准备工作
  • 企业IT管理——突发病毒事件应急处理预案模板
  • 永磁同步电机控制算法--弱磁控制(虚拟电阻)
  • 51c大模型~合集160
  • 重温经典,小巧方便的 WinXP 来啦!提供离线驱动
  • 【编号444】雅鲁藏布江(上中下)游8级水系湖泊数据合集
  • net8.0一键创建支持(RabbitMQ)
  • 神经网络知识讨论
  • 嵌入式硬件篇---驱动板
  • 【学习笔记】DexMimicGen:通过模仿学习实现双臂灵巧操作的自动化数据生成
  • 数据结构基础内容(第三篇:堆栈)
  • 深度解析 inaSpeechSegmenter:高效音频语音分割与检测开源工具
  • Epoll事件EPOLLRDHUP详解
  • springboot基于Java与MySQL库的健身俱乐部管理系统设计与实现
  • C51:使用超声波测量距离
  • C#.NET dapper 详解
  • MySQL 中的 BufferPool 和 ChangeBuffer
  • Amazon Relational Database Service (Amazon RDS)入门课
  • 量子力学的基本假设
  • 【Java】图书管理系统设计详解
  • 《 集成异步任务与定时调度:线程池与任务中心设计》