全部都有的子序列

在这里插入图片描述

思路(双指针)

先使用Set来存储总共有多少不同的数字,然后我们使用快慢指针去遍历数组,快指针每次遍历到一个数,将其加入到哈希表,哈希表使用pair存储,第一个元素存数字,第二个元素存数字在快慢指针区间中出现的次数,哈希表的大小就是区间内不同元素的数目,当大小等于总的不同数目个数时,就找到了一个区间,这时候慢指针在开始移动,每次移动,将所指的元素从哈希表的次数减一次,如果变为0,就删掉这个数,然后慢指针一直移动,直到边界或者哈希表大小不等于总共的不同数字的数目。

代码

#include <iostream>
#include <algorithm>
#include <unordered_map>
#include <unordered_set>using namespace std;const int N = 100010;int n;
int a[N];
unordered_set<int> s;
unordered_map<int, int> t;int main()
{cin >> n;for ( int i = 0; i < n; i ++ ){cin >> a[i];s.insert(a[i]);}int res = N;int m = s.size();for ( int i = 0, j = 0; i < n; i ++ ){t[a[i]] ++;if ( t.size() == m ){res = min(res, i - j + 1);while ( j < i && t.size() == m ){t[a[j]] --;if ( !t[a[j]] ) t.erase(a[j ++]);else j ++;if ( t.size() == m ) res = min(res, i - j + 1);}}}cout << res << endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/505553.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

红外电力设施检测数据集

需要的同学私信联系&#xff0c;推荐关注上面图片右下角的订阅号平台 自取下载。 红外检测技术目标检测准确、速度快、涵盖面积广&#xff0c;可以在不停电、不接触、不解体、不采样的状态下&#xff0c;对带电设备的状态进行检测和诊断&#xff0c;精确查找出设备的劣化程度、…

Sora的技术原理的分析以及带来的影响

1、Sora&#xff1a;视频生成模型作为世界模拟器 我们探索在视频数据上进行大规模生成模型的训练。具体来说&#xff0c;我们联合训练了文本条件扩散模型&#xff0c;用于处理持续时间、分辨率和宽高比各异的视频和图像。我们利用了一种变压器架构&#xff0c;该架构在视频和图…

李宏毅机器学习入门笔记——第八节

Auto-Encoder 输入图片经过两个网络后&#xff0c;计算他们两个越接近越好。 类似于Cycle GAN。 encoder将高纬度数据降维&#xff0c;作为低纬度向量 假如噪声进行训练&#xff0c;encoder将图片中的噪声去除。 其实BERT而言&#xff0c;就是以后个auto-encoder。 Feature d…

Http基础之http协议、无状态协议、状态码、http报文、跨域-cors

Http基础 HTTP基础HTTP协议请求方法持久连接管线化 无状态协议使用Cookie状态管理 状态码1XX2XX OK200 OK204 NO Content206 Content-Range 3XX 重定向301302304307 4XX400401403404 5XX500503 HTTP报文请求报文响应报文通用首部字段Cache-ControlConnectionDate请求首部字段Ac…

算法--动态规划(线性DP、区间DP)

这里写目录标题 tip数组下标从0开始还是从1开始 线性DP数学三角形介绍算法思想例题代码 最长上升子序列介绍算法思想例题代码 最长公共子序列介绍算法思想例题代码 编辑距离介绍例题代码 区间DP问题石子合并介绍算法思想例题代码 tip 数组下标从0开始还是从1开始 如果代码中涉…

Muduo库编译学习(1)

1.muduo库简介 muduo是由Google大佬陈硕开发&#xff0c;是一个基于非阻塞IO和事件驱动的现代C网络库&#xff0c;原生支持one loop per thread这种IO模型&#xff0c;该库只支持Linux系统&#xff0c;网上大佬对其褒贬不一&#xff0c;作为小白用来学习就无可厚非了。 git仓库…

[c++] 继承和多态整理二

1 虚函数和纯虚函数 虚函数&#xff0c;之所以说是虚的&#xff0c;说的是在派生类中&#xff0c;可以覆盖基类中的虚函数&#xff1b;相对于虚函数来说&#xff0c;没有 virtual 修饰的函数可以叫做实函数&#xff0c;实函数就不能被覆盖。虚函数是实现多态的核心。虚函数和纯…

pdf如何压缩文件大小?pdf文件在线压缩方法介绍

在日常工作中&#xff0c;我们经常使用PDF文件进行传输和保存&#xff0c;然而&#xff0c;有时候我们会遇到过大的PDF文件&#xff0c;这不仅会导致传输困难&#xff0c;还会占用过多的设备空间&#xff0c;因此&#xff0c;我们需要对PDF压缩一下以便更轻松地传输和保存&…

重学Springboot3-@ConditionalOnXxx条件注解

重学Springboot3-ConditionalOnXxx条件注解 引言常见的条件注解常见的条件注解示例扩展条件注解1. ConditionalOnJndi2. ConditionalOnJava3. ConditionalOnCloudPlatform4. ConditionalOnEnabledResourceChain5. 自定义条件注解 总结 引言 Spring Boot 提供了一组强大的条件注…

对程序、进程、线程、并发、并行、高并发概念的讲解

一、概述 程序、进程、线程、并发、并行和高并发是计算机科学领域中非常重要的概念。 了解进程、线程、并发和并行的概念&#xff0c;可以更好地利用计算机的多核处理器和并行计算能力&#xff0c;提高计算机性能。 了解进程和线程为操作系统中的资源管理提供了基础&#xff…

每日一类:QLabel深入解析

QLabel是Qt中用于显示文本或图像的控件&#xff0c;属于Qt Widgets模块。它是展示静态内容的理想选择&#xff0c;支持富文本格式&#xff0c;使得文本可以包含不同的字体、颜色和链接。QLabel也可以用来显示图像&#xff0c;包括动态图像。此外&#xff0c;它还支持文本和图像…

P4715 【深基16.例1】淘汰赛题解

题目 有&#xff08;n≤7&#xff09;个国家参加世界杯决赛圈且进入淘汰赛环节。已经知道各个国家的能力值&#xff0c;且都不相等。能力值高的国家和能力值低的国家踢比赛时高者获胜。1号国家和2号国家踢一场比赛&#xff0c;胜者晋级。3号国家和4号国家也踢一场&#xff0c;…