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

相关文章:

  • ubuntu18.04解压大的tar.gz文件失败
  • MySQL 全详解:从入门到精通的实战指南
  • vulhub-red靶机攻略
  • 优化Linux高并发:文件描述符与端口范围的协同调优
  • 【橘子分布式】gRPC(番外篇-客户端重试机制)
  • Python爬虫实战:研究tldextract库相关技术构建新闻网站域名分析爬虫系统
  • Java学习-------桥接模式
  • 3D芯片香港集成:技术突破与产业机遇全景分析
  • Python操作Excel文件完整指南
  • 依赖倒置原则 Dependency Inversion Principle - DIP
  • 2025 环法对决,VELO Angel Glide 坐垫轻装上阵
  • python优秀案例:基于python flask实现的小说文本数据分析与挖掘系统,包括K-means聚类算法和LDA主题分析
  • HBuilder X打包发布微信小程序
  • rust-包和箱子
  • 主要分布于内侧内嗅皮层的层Ⅲ的边界向量细胞(BVCs)对NLP中的深层语义分析的积极影响和启示
  • day062-监控告警方式与Grafana优雅展示
  • 【Oracle】套接字异常(SocketException)背后隐藏的Oracle问题:ORA-03137深度排查与解决之道
  • EasyExcel使用(二:写出)
  • MySQL 8.0.42创建MGR集群
  • vue3报错:this.$refs.** undefined
  • nacos连接失败,启动失败常见问题
  • Vue 框架 学习笔记
  • 【笔记】Einstein关系式 D = ukBT 的推导与应用研究
  • GAN/cGAN中到底要不要注入噪声
  • 计算机网络:(十二)传输层(上)运输层协议概述
  • FPGA IP升级
  • Linux文件理解,基础IO理解
  • SCUDATA esProc SPL Enterprise Edition(大数据计算引擎) v20250605 中文免费版
  • Keepalive高可用集群的实验项目
  • 【Java系统接口幂等性解决实操】