算法刷题笔记 最长连续不重复子序列(C++实现)

文章目录

    • 题目描述
    • 解题思路
    • 实现代码

题目描述

  • 给定一个长度为n的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。

输入格式

  • 第一行包含整数n
  • 第二行包含n个整数(均在 0∼10^5范围内),表示整数序列。

输出格式

  • 共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。

数据范围

  • 1 ≤ n ≤ 10^5

解题思路

这道题实际上就是一道双指针算法题,其解题思路基本上和我之前的一篇博文 力扣刷题笔记3 无重复字符的最长子串 完全类似。那一道题目借鉴了哈希集合,用于以字符为键,查找当前右指针指向的元素是否在集合中。本题实际更简单一些,只需要用整数位键来查找即可。因此,不难联想到我们可以直接使用最简单的数组进行查找,因为数组可以被简单视为键为整数的哈希集合。所以得到的代码如下。

实现代码

#include <cstdio>const int N(1e5 + 10);
int arr[N];
bool record[N];int main(void)
{int n;scanf("%d", &n);int max_length(0);for(int i(0); i < n; ++i){scanf("%d", &arr[i]);}for(int left(0), right(0); left < n; ++left){while(record[arr[right]] == false && right < n){record[arr[right++]] = true;max_length = (right - left > max_length) ? right - left : max_length;}record[arr[left]] = false;}printf("%d", max_length);return 0;
}
  • 注意事项:在编程的过程中,一定不能为了追求代码的简洁而将多个步骤合并,否则检查和调试过程非常麻烦。

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

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

相关文章

vue打包时报错文件包过大

1.问题&#xff1a;npm run build 之后出现 2. 翻译之后意思就是某块过大 3. 解决办法&#xff1a;在vite.config.ts文件上添加 build: { chunkSizeWarningLimit: 1600, }, 4.最终打包

UnityLeapMotion流程记录

突然接到一个LeapMotion的项目&#xff0c;回想起上次做LeapMotion还是在几年前&#xff0c;但是当时没有去记录&#xff0c;所以这次就相当于是重新走了一遍流程。很苦恼&#xff0c;赶紧记录下来。防止之后忘记。这次的需求还是比较简单的&#xff0c;用手滑动控制图片序列播…

在Visual Studio2022中同一个项目里写作业,有多个cpp文件会报错

为了省事&#xff0c;在同一个项目里写很多个题目&#xff0c;结果只有一个cpp文件时没出错&#xff0c;写了2个cpp文件再想运行时就出错了&#xff1b; 将不相关的cpp文件移出去 在源文件中对其点击右键&#xff0c;找到“从项目中排除”&#xff1b; 结果如图&#xff0c;剩…

【Android】 怎么设置蓝牙等待设备连接和接收数据

项目需求 1.打开蓝牙之后等待别的蓝牙设备进行连接。 2.连接之后等待别的设备发送数据&#xff0c;然后接收数据。 3.跟别的蓝牙设备断开连接值进入到等待状态&#xff0c;等待别的蓝牙设备连接。 解决方式 //非手机终端的UUID public static final UUID SPP_UUID UUID.fro…

深度学习21天 —— 卷积神经网络(CNN):识别验证码( 第12天)

目录 一、前期准备 1.1 标签数字化 1.2 加载数据 1.3 配置数据 二、其他 2.1 损失函数 categorical_crossentropy 2.2 plt.legend(loc ) 2.3 history.history 活动地址&#xff1a;CSDN21天学习挑战赛 学习&#xff1a;深度学习100例-卷积神经网络&#xff08;CNN&…

通过 SFP 接口实现千兆光纤以太网通信2

Tri Mode Ethernet MAC IP 核结构 时钟网络 IP 核内部时钟网络结构如下图所示。其中&#xff0c;tx_mac_aclk 为 AXI-Stream 发送接口的同步时钟&#xff0c; rx_mac_aclk 为 AXI-Stream 接收接口的同步时钟。由于在设计中没有使用 MDIO 接口&#xff0c;所以不存在时钟信号 …

二人订单共享结束制:终身受益的新模式

在当今快速发展的互联网时代&#xff0c;一个创新的商业模式总能引起广泛关注。其中&#xff0c;“二人订单共享结束制”以其独特的魅力&#xff0c;吸引了众多消费者和创业者的目光。这一模式不仅为消费者带来了实惠&#xff0c;更为创业者提供了一个全新的平台。 只需购买一…

Android的刷机模式

高通为例子。不看不知道&#xff0c;一看原来这么多。想以前做博通方案&#xff0c;就是一个web刷机包刷到死。到底是技术进步了还是以前太浅薄&#xff1f;&#xff01;。。。 基本参考这篇&#xff1a;https://www.cnblogs.com/bluestorm/p/18129830 常用的应该就是OTA&…

OpenHarmony及鸿蒙应用的屏幕亮度获取以及设置

目录 一.前置知识 二.具体实现 一.前置知识 对应的OpenHarmony版本:V3.2 查找资料发现V3.2版本的OpenHarmony没有获屏幕亮度的接口,只有设置屏幕亮度的接口,这个就很奇怪,所以我最终的方案是获取屏幕亮度使用老的接口,设置屏幕亮度使用新的接口,这样就完成了这个需求…

C/C++中的 extern 和extern“C“关键字详解(通俗易懂)

前言 1、C/C extern关键字用法 2、extern "C"用法 正文 1、extern关键字 extern其实就是一个声明&#xff0c;明确指出一个语句是声明&#xff0c;比如extern int i ;这是声明变量i&#xff0c;而不是定义i&#xff0c;定义i则是int i&#xff08;声明不开辟内存空…

网络数据库后端框架相关面试题

面试是工作的第一步&#xff0c;面试中面试官所提出的问题千奇百怪&#xff0c;其中关于网络数据库后端框架面试题汇总如下&#xff1a; 1&#xff0c;关系型数据库和非关系型数据库的区别 关系型数据库主要有 MYsql Iracle SQLSever等 相对于非关系型数据库的优势为查询效率…

【C++集群聊天服务器(一)】|Linux平台资源受限下boost库和muduo网络库源码编译安装

本人使用的服务器是2G2核 ubuntu22.04 前置工作 muduo库源码github仓库地址&#xff1a; muduo WIndows和Linux平台的boost源码包下载(zip是Windows版&#xff0c;tar.gz是Linux版&#xff0c;你也可以去boost官网下载最新版本) Boost C Libraries 由于muduo网络库是基于boo…

C语言| 输出*三角形

分析&#xff1a; ① 输入三角形主要分为两部分&#xff0c; 即输出空格和输出星号&#xff0c;要将它们分开&#xff0c;不用考虑空格数和星号个数之间的关系。 ② 从每行输出的空格个数来看&#xff0c;若总共输出n行&#xff0c;则第i行首先要输出n - i个空格&#xff0c;然…

基于java的CRM客户关系管理系统(二)

目录 第二章 相关技术介绍 2.1 后台介绍 2.1.1 B/S平台模式 2.1.2 MVC 2.1.3 Spring 2.1.4 Hibernate 2.1.5 Struts 2.2 前端介绍 2.2.1 JSP网页技术 2.3 开发工具 2.4 本章小结 前面内容请移步 基于java的CRM客户关系管理系统&#xff08;二&#xff09; 资源…

网络原理-TCP/IP --传输层(UDP)

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 今天你敲代码了吗 目录 端口号UDP协议 端口号 我们在学习套接字的时候,涉及到两个概念:IP地址和端口号 IP地址是用来确定主机,这是网络层提供的概念 而端口号就是用来确定主机上的应用程序,就是传输层的概念的…

std::scoped_lock

scope--范围 当创建一个 std::scoped_lock 对象时&#xff0c;它尝试取得其所给互斥量的所有权,即上锁。当控制权离开创建 scoped_lock 对象的作用域时&#xff0c;scoped_lock 会被析构&#xff0c;互斥量随之被释放。 链接

代码随想录35期Day54-JavaScript

Day54题目 ### LeetCode739每日温度 核心思想:今天主要是学会单调栈的使用.找到比元素更大的下一个元素,如果比栈顶元素小就入栈,否则就出栈顶元素,当前元素就是比栈顶元素大的"下一个更大的元素". /*** param {number[]} temperatures* return {number[]}*/ var …

Linuxftp服务003虚拟用户登入

如果基于Vsftpd系统用户访问FTP服务器&#xff0c;系统用户越多越不利于管理&#xff0c;而且不利于系统安全管理&#xff0c;鉴于此&#xff0c;为了能更加的安全使用Vsftpd&#xff0c;需使用Vsftpd虚拟用户方式。 虚拟用户原理&#xff1a; 虚拟用户就是没有实际的真实系统…

CANDela studio新建和编辑服务

服务定义和编辑只能够在CDDT里面进行&#xff0c;思路分为三步&#xff1a; 1、Protocol Services里面添加服务&#xff0c;定义服务的格式、请求和正负响应。 2、根据服务的功能归类到Diagnostic Class Tenplates 3、Variant里面的Supported Diagnostic Classes勾选 然后我…

题目:回答结果(结构体变量传递)

题目&#xff1a;回答结果&#xff08;结构体变量传递&#xff09; There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about …