Awcing 799. 最长连续不重复子序列

Awcing 799. 最长连续不重复子序列

在这里插入图片描述
解题思路:

让我们找到一个数组中,最长的 不包含重复的数 的连续区间的长度。

最优解是双指针算法:

  • 我们用 c n t [ i ] cnt[i] cnt[i]记录 i i i 这个整数在区间内出现的次数。(因为每个数的大小为 1 0 5 10^5 105, 存的下)。

代码如下:

#include<iostream>using namespace std;
const int maxn = 1e5 + 10;int a[maxn];
int cnt[maxn];int main(){int n;cin >> n;int res = 0;for(int i = 1, j = 1; i <= n; i ++ ) {cin >> a[i];cnt[a[i]] ++; // 将 a[i] 出现次数 ++while(cnt[a[i]] > 1) { // 如果在 [j, i - 1] 区间内出现过,那次数会变成2cnt[a[j]] --; // 从区间开始位置 j 的那个数依次往前去掉,知道遇到与a[i]值相同的为止,j ++;}res = max(res, i - j + 1);}cout << res << endl;return 0;
}

数据加强版: 如果说我们把每个数的大小规定为 [ 1 , 1 0 9 ] [1, 10^9] [1,109], 那显然就不能用数组来保存每个数出现的次数,开不了这么大的数组。于是我们就可以把这些数离散化。(因为最多有 1 0 5 10^5 105个点)。

代码如下:

#include<iostream>
#include<unordered_map>using namespace std;
const int maxn = 1e5 + 10;int a[maxn];unordered_map<int, int> mp; // 离散化存储int main(){ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int n;cin >> n;int res = 0;for(int i = 1, j = 1; i <= n; i ++ ) {cin >> a[i];mp[a[i]] ++; // 将 a[i] 出现次数 ++while(mp[a[i]] > 1) { // 如果在 [j, i - 1] 区间内出现过,那次数会变成2mp[a[j]] --; // 从区间开始位置 j 的那个数依次往前去掉,知道遇到与a[i]值相同的为止,j ++;}res = max(res, i - j + 1);}cout << res << endl;return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

赵长鹏今日获释,下一步会做什么?币安透露2024年加密货币牛市的投资策略!

中国时间2024年9月28日&#xff0c;加密货币行业的风云人物赵长鹏&#xff08;Changpeng Zhao&#xff0c;简称CZ&#xff09;终于从监狱获释。他因在担任币安首席执行官期间未能有效执行反洗钱(AML)计划而被判刑四个月。赵长鹏的获释引发了广泛关注&#xff0c;不仅因为他是全…

大语言模型知识点分享

1 目前主流的开源模型体系有哪些&#xff1f; Prefix Decoder 系列模型 核心点&#xff1a; 输入采用双向注意力机制&#xff0c;输出为单向注意力。双向注意力意味着输入的每个部分都可以关注到输入的所有其他部分&#xff0c;这在理解上下文时具有很强的优势。 代表模型&a…

python全栈开发《41.列表的clear函数》

1.clear的功能 一次性将当前列表中所有的数据清空。 2.clear的用法 target [1,2,3,4,5,6] target.clear() print(target) 运行结果&#xff1a; /Users/llq/PycharmProjects/pythonlearn/pythonlearn/python_list/bin/python /Users/llq/PycharmProjects/pythonlearn/python_l…

JavaEE: 探索网络世界的核心-IP协议

文章目录 IP 协议协议头格式IP 地址IP地址的数量限制解决IP不够用的问题 IP 地址的网段划分子网掩码ABCDE五类网络 特殊的 IP 地址 IP 协议 协议头格式 4位版本号: 只有两个取值,4(IPv4)和6(IPv6). IPv2,IPv5这些在实际中是没有的,可能是理论上/实验室中存在~ 4位首部长度: IP…

Redis集群的两种方式

1.Redis集群 1.1 搭建主从集群 单节点Redis的并发能力是有上限的&#xff0c;要进一步提高Redis的并发能力&#xff0c;就需要搭建主从集群&#xff0c;实现读写的分离。一般情况下&#xff0c;主节点负责写操作&#xff0c;从节点负责读操作。而从节点如何得知数据呢&#xff…

Study-Oracle-10-ORALCE19C-RAC集群搭建(一)

一、硬件信息及配套软件 1、硬件设置 RAC集群虚拟机:CPU:2C、内存:10G、操作系统:50G Openfile数据存储:200G (10G*2) 2、网络设置 主机名公有地址私有地址VIP共享存储(SAN)rac1192.168.49.13110.10.10.20192.168.49.141192.168.49.130rac2192.168.49.13210.10.10.3…

产品管理 - 互联网产品(4): 交互设计

原型设计 原型是产品可视化的展示&#xff0c;包括了产品的信息架构、功有、内容、交互方式。目前业务普遍菜用了Axure作为原型设计工具。产品或交互人员通过对信息架构的梳理&#xff0c;确认界面内容区的划分&#xff0c;并通过交互方式呈现功能点。 原型分为线框图、低保真…

如何通过Dockfile更改docker中ubuntu的apt源

首先明确我们有一个宿主机和一个docker环境&#xff0c;接下来的步骤是基于他们两个完成的 1.在宿主机上创建Dockerfile 随便将后面创建的Dockerfile放在一个位置,我这里选择的是 /Desktop 使用vim前默认你已经安装好了vim 2.在输入命令“vim Dockerfile”之后&#xff0c;…

留学生如何适应海外生活以及应对文化差异

对于即将出国学习和生活的留学生来说&#xff0c;文化差异和生活方式的变化常常是一个紧迫的问题。那么&#xff0c;如何应对这些文化差异&#xff0c;以及如何适应新的学习环境和社交生活呢&#xff1f;本文将分享一些具体可行的建议和方法&#xff0c;助您顺利跨越这道难关&a…

CentOS 替换 yum源 经验分享

视频教程在bilibili:CentOS 替换 yum源 经验分享_哔哩哔哩_bilibili问题原因 解决方法 1. 进入镜像目录 [rootlocalhost ~]# cd /etc/yum.repos.d/ 2.备份文件 [rootlocalhost yum.repos.d]# rename repo bak * 3.寻找阿里镜像源复制 https://developer.aliyun.com/mirror/ …

vue框架学习 -- 日历控件 FullCalendar 使用总结

最近在项目中要实现日期排班的功能&#xff0c;正好要用到日历视图的控件&#xff0c;经过对比发现&#xff0c;vue 中 使用 FullCalendar 可以实现相关需求&#xff0c;下面对使用过程做一个总结。 一. 引入 FullCalendar 控件 package.json 中添加相关依赖 "dependen…

STM32单片机编程调试常见问题(一) HardFault_Handler故障分析与解决

文章目录 一.概要二.什么是Hard fault三.Hard fault 产生的原因分析四.制作一个Hard fault程序并定位出问题原因1.查看堆栈指针SP的地址以及内容2.找到Return address地址3.查看汇编界面4.输入Return address地址&#xff0c;查找到问题代码 小结 一.概要 在嵌入式开发中&…

Hugging Face从命令行到桌面:Chat-macOS让AI互动更简单,关键还免费!

你是否曾经觉得,命令行操作虽然强大,但总是有些难以上手?或者,你是否希望和AI互动可以像日常使用macOS应用一样直观?那你一定要试试Chat-macOS,它让你从命令行走向桌面,体验更轻松的AI互动方式。 1. 什么是Chat-macOS? Chat-macOS是一个桌面应用程序,它能够将Hug…

pdf怎么转变成jpg图片?值得推荐的几种PDF转jpg方法

pdf怎么转变成jpg图片&#xff1f;jpg格式的图像在电子邮件、社交媒体等在线平台上分享非常方便&#xff0c;用户无需担心软件兼容性问题。将PDF内容转换为jpg后&#xff0c;能够有效保留原始文档的视觉布局&#xff0c;使信息更加生动易懂&#xff0c;适合用于演示和展示。同时…

六级翻译 高分笔记

第一节 句子的拆分与重组 核心原则&#xff1a;拆主干&#xff0c;补修饰 一、句子的拆分与重组 1.青藏铁路是世界最高最长的高原铁路。&#xff08;“的”字前面所有去掉&#xff0c;就是句子主干&#xff09; The Qinghai-Tibet Railway is the highest and longest plate…

工控主板在工业控制中扮演什么角色

工控主板在工业控制中扮演着至关重要的角色&#xff0c;它是工业控制系统的核心组件&#xff0c;负责连接、控制和管理各种工业设备&#xff0c;实现自动化生产和智能化管理。具体来说&#xff0c;工控主板在工业控制中的作用可以归纳为以下几个方面&#xff1a; 一、核心控制…

综合业务区的数字化创新与智能化蓝图

数字化智能管理的关键要素之一是综合业务区的电子标签系统&#xff0c;该系统在提高管理工作的效率、精确跟踪资源以及改善业务流程中扮演了至关重要的角色。以下内容将对这一综合业务区采用的智能电子标签系统进行深入剖析。 一、定义与功能 1.1定义 融合多功能于一体的智能…

海外盲盒APP系统:盲盒出海热潮下的选择

近年来&#xff0c;盲盒市场展现出了强劲的发展态势&#xff0c;不仅在国内持续上演“盲盒热”&#xff0c;在海外市场中更是“一盒难求”&#xff01;在盲盒出海的浪潮下&#xff0c;盲盒在国际市场中迅速火爆&#xff0c;一时席卷了全球市场。 海外盲盒系统是企业拓展海外市…

为本地生活赛道从业者赋能,易播易赚开启“抖音直播分享会”

9月22日&#xff0c;由杭州易播易赚科技有限公司主办的“抖音直播分享会”在杭州市富阳区召开&#xff0c;此次会议吸引了来自全国各地的抖音直播从业者、有志于加入抖音直播事业的创业者以及行业内知名专家齐聚一堂&#xff0c;共同探讨行业发展趋势、分享实战经验&#xff0c…