当前位置: 首页 > 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.xdnf.cn/news/1196839.html

相关文章:

  • 基于 KNN 算法的手写数字识别项目实践
  • DAY21-二叉树的遍历方式
  • vuhub jangow-01-1.0.1靶场攻略
  • 简易 BMI 身体质量指数计算器
  • C++算法竞赛篇(六)一维数组题型讲解
  • 用哈希表封装Myunordered_map和Myunordered_set
  • mac neo4j install verifcation
  • mac配置多版本jdk
  • Python 列表推导式与生成器表达式
  • 【成功经验分享】Github Education (Github学生认证)认证
  • 数据江湖的“三国演义”:数据仓库、数据湖与湖仓一体的全景对比
  • RAG vs 微调
  • 使用uni-app开发一个点餐收银台系统前端静态项目练习
  • C 语言第 10 天学习笔记:字符串基础操作与相关函数
  • 机器学习特征选择 explanation and illustration of ANOVA
  • java开闭原则 open-closed principle
  • 影刀RPA_初级课程_玩转影刀自动化_网页操作自动化
  • 【机器学习深度学习】NLP评价指标 BLEU 和 ROUGE
  • python优秀案例:基于python flask实现的小说文本数据分析与挖掘系统,包括K-means聚类算法和LDA主题分析
  • 用KNN实现手写数字识别:基于 OpenCV 和 scikit-learn 的实战教学 (超级超级超级简单)
  • Kafka——消费者组消费进度监控都怎么实现?
  • 牛客周赛101 D题 题解
  • 五、搭建springCloudAlibaba2021.1版本分布式微服务-gateway网关
  • 力扣热题100----------53最大子数组和
  • 零基础学习性能测试第五章:Tomcat的性能分析与调优-Tomcat原理,核心配置项,性能瓶颈分析,调优
  • RAG(检索增强生成)
  • 探秘CommonJS:Node.js模块化核心解析
  • redis主从复制、哨兵机制底层原理
  • XML Schema 指示器:全面解析与深度应用
  • 齐护Ebook科技与艺术Steam教育套件 可图形化micropython Arduino编程ESP32纸电路手工