后端开发刷题 | 最长无重复子数组

描述

给定一个长度为n的数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字都不相同。

子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组

数据范围:0≤arr.length≤105,0<arr[i]≤105

示例1

输入:

[2,3,4,5]

返回值:

4

说明:

[2,3,4,5]是最长子数组        

示例2

输入:

[2,2,3,4,3]

返回值:

3

说明:

[2,3,4]是最长子数组        

示例3

输入:

[9]

返回值:

1

示例4

输入:

[1,2,3,1,2,3,2,2]

返回值:

3

说明:

最长子数组为[1,2,3]       

示例5

输入:

[2,2,3,4,8,99,3]

返回值:

5

说明:

最长子数组为[2,3,4,8,99]

思路分析:

方法1:

该题可以使用队列来实现,因为队列先进先出,后进后出的特性,在遇到重复元素可以通过queue.poll()的方法把队头元素出队,使队列里面没有重复元素。

并且每添加一个元素,就比较最大值个数来更新res。

代码:

import java.util.*;public class Solution {/*** @param arr int整型一维数组 the array* @return int整型*/public int maxLength (int[] arr) {Queue<Integer> queue=new LinkedList<>();int res=0;for(int c:arr){while(queue.contains(c)){//如果有重复的元素,则让队头出队,一直到队列里面没有重复元素queue.poll();}//添加元素到队尾queue.add(c);res=Math.max(res,queue.size());}return res;}
}

思路分析:

方法2:

可以使用“滑动窗口”技术,是一种常用于解决数组/字符串中满足特定条件的子数组/子串问题的技术。在这个问题中,通过维护一个窗口(即左右指针之间的部分),并使用哈希集合来快速检查元素是否重复,我们能够高效地找到最长无重复元素子数组的长度。

步骤:

  1. 初始化变量
    • left 和 right 是两个整型指针,分别表示当前考虑的子数组的左右边界。初始时,它们都指向数组的第一个元素(即索引 0)。
    • max 用于记录迄今为止找到的最长无重复元素子数组的长度。初始值为 0。
    • set 是一个 HashSet,用于存储当前考虑的子数组中的元素,以便快速检查元素是否重复。
  2. 遍历数组
    • 使用一个 while 循环遍历数组 arr,条件是 right 指针小于数组的长度。这意味着只要 right 指针没有超出数组的范围,循环就会继续。
  3. 处理重复元素
    • 在每次循环中,首先检查 set 是否已经包含了 arr[right]。这是通过调用 set.contains(arr[right]) 来实现的。
    • 如果 set 包含 arr[right],说明当前考虑的子数组中出现了重复元素。此时,需要从子数组中移除左边界的元素(即 arr[left]),直到不再重复为止。这是通过循环调用 set.remove(arr[left++]) 来实现的,同时 left 指针向右移动。
  4. 添加元素并更新最长长度
    • 如果 set 不包含 arr[right],说明当前元素可以添加到子数组中。此时,将 arr[right] 添加到 set 中,并将 right 指针向右移动。
    • 然后,检查并更新 max 的值,以确保它始终表示当前找到的最长无重复元素子数组的长度。这是通过调用 max = Math.max(max, set.size()) 来实现的。注意,这里我们直接使用了 set.size() 来获取当前无重复元素子数组的长度。
  5. 返回结果
    • 当 right 指针超出数组范围时,循环结束。此时,max 变量中存储的就是最长无重复元素子数组的长度。方法返回这个值。

代码:

import java.util.*;public class Solution {/*** @param arr int整型一维数组 the array* @return int整型*/public int maxLength (int[] arr) {int left=0,right=0;Set<Integer> set=new HashSet<>();int max=0;while(right<arr.length){if(set.contains(arr[right])){set.remove(arr[left++]);}else{set.add(arr[right++]);max=Math.max(max,set.size());}}return max;}
}

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

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

相关文章

【成神之路】Ambari实战-011-代码生命周期-metainfo加载原理深度剖析

在 Ambari 中&#xff0c;metainfo.xml 是定义服务和组件的关键配置文件。Ambari 通过解析它来加载和管理服务的整个生命周期。今天&#xff0c;我们将深入探索 metainfo.xml 是如何被解析的&#xff0c;并以 Redis 集群服务为例&#xff0c;逐步解读 Ambari 的处理过程。&…

cv中每个patch的关联

在计算机视觉任务中&#xff0c;当图像被划分为多个小块&#xff08;patches&#xff09;时&#xff0c;每个 patch 的关联性可以通过不同的方法来计算。具体取决于使用的模型和任务&#xff0c;以下是一些常见的计算 patch 关联性的方法&#xff1a; 1. Vision Transformer (…

Java : 图书管理系统

图书管理系统的作用&#xff1a; 高效的图书管理 图书管理系统通过自动化管理&#xff0c;实现了图书的采编、编目、流通管理等操作的自动化处理&#xff0c;大大提高了图书管理的效率和准确性。 工作人员可以通过系统快速查找图书信息&#xff0c;实时掌握图书的借还情况&…

【comfyUI工作流】一键生成专属欧美漫画!

现在你不需要在webui上手动设置一堆的参数 来将自己的照片转绘成欧美漫画插画 可以通过我制作的工作流一键完成转绘&#xff0c;更加效率便捷&#xff0c; 而且不需要你懂什么专业的AI绘画知识&#xff0c;会打开工作流&#xff0c;上传图片就可以 工作流特点 真实照片一键…

程序员的AI时代:拥抱变革,塑造未来

你们有没有想过&#xff0c;如果有一天&#xff0c;你的编程工作被一个AI助手取代了&#xff0c;你会怎么办&#xff1f;这不是危言耸听&#xff0c;随着AIGC技术的飞速发展&#xff0c;这样的场景可能真的会出现。但是&#xff0c;别担心&#xff0c;今天我们就来聊聊&#xf…

XSS—xss-labs靶场通关

level 1 JS弹窗函数alert() <script>alert()</script> level 2 闭合绕过 "> <script>alert()</script> <" level 3 onfocus事件在元素获得焦点时触发&#xff0c;最常与 <input>、<select> 和 <a> 标签一起使用…

[Excel VBA办公]如何使用VBA批量删除空行

在处理Excel数据时&#xff0c;空行可能会干扰数据分析和展示。以下是一个VBA代码示例&#xff0c;帮助你批量删除工作表中的空行。 1. 代码说明 此代码将遍历指定工作表&#xff0c;删除所有空行&#xff0c;确保数据整洁。 2. VBA代码 删除sheet1的空行 Sub DeleteEmptyRow…

re题(39)BUUCTF-[FlareOn3]Challenge1

BUUCTF在线评测 (buuoj.cn) 查壳是32位&#xff0c;ida打开&#xff0c;进入main函数&#xff0c;进入sub_401260看看 查看byte_413000存的字符串 _BYTE *__cdecl sub_401260(int a1, unsigned int a2) {int v3; // [espCh] [ebp-24h]int v4; // [esp10h] [ebp-20h]int v5; //…

19 基于51单片机的倒计时音乐播放系统设计

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 五个按键&#xff0c;分别为启动按键&#xff0c;则LCD1602显示倒计时&#xff0c;音乐播放 设置按键&#xff0c;可以设置倒计时的分秒&#xff0c;然后加减按键&#xff0c;还有最后一个暂停音乐…

项目集成sharding-jdbc

目录 项目集成sharding-jdbc 1.业务分析 2.数据库构建 3.分库分表策略 项目配置默认数据源 一&#xff1a;导入sharding-jdbc依赖 二&#xff1a;在application文件中编写配置 三&#xff1a;注释掉主配置文件中配置的数据源 注意&#xff1a;这里添加了spring.main.allow…

芝士AI论文写作|开题报告、论文生成、降重、降AI、答辩PPT

芝士AI&#xff0c;免费论文查重软件,为毕业生提供专业的AI论文生成、强力降重、AIGC降低、论文重复率检测、论文降重、学术查重、学术检测、PPT生成、学术论文观点剽窃检测等一站式服务。免费论文查重_芝士AI&#xff08;PaperZZ&#xff09;论文检测__PaperZZ论文查重 是不是…

Snap 发布新一代 AR 眼镜,有什么特别之处?

Snap 发布新一代 AR 眼镜&#xff0c;有什么特别之处&#xff1f; Snap 简介 新一代的 AR 眼镜特点 Snap 简介 Snap 公司成立于 2010 年&#xff0c;2017 年美国东部时间 3 月 2 日上午 11 时许&#xff0c;在纽交所正式挂牌交易&#xff0c;股票代码为 “SNAP”。其旗下的核…

QT 信号和槽函数

信号和槽函数介绍 conncet(sender, signal, receiver, slot) /* * 1. 信号发出者&#xff1b; * 2. 信号&#xff1b; * 3. 信号接收者&#xff1b; * 4. 接受到信号执行任务&#xff1b; 槽函数 */自定义信号和槽函数 场景 &#xff1a;老师饿了&#xff0c;学生请客&#xf…

使用 KMeans 聚类算法 对鸢尾花数据集进行无监督学习的简单示例

代码功能 主要功能&#xff1a; 加载数据集&#xff1a; 代码使用 load_iris() 函数加载了鸢尾花数据集&#xff08;Iris dataset&#xff09;。这个数据集包含 150 条样本&#xff0c;每条样本有 4 个特征&#xff0c;对应于 3 种不同的鸢尾花。 KMeans 聚类&#xff1a; 使用…

Kafka-Manager安装及操作

文章目录 一、kafka-manager介绍二、kafka-manager安装三、Kafka-Manager操作 一、kafka-manager介绍 CMAK (Cluster Manager for Apache Kafka, previously known as Kafka Manager) CMAK (previously known as Kafka Manager) is a tool for managing Apache Kafka cluster…

Java反序列化利用链篇 | CC1链的第二种方式-LazyMap版调用链【本系列文章的分析重点】

文章目录 CC1链的第二种方式-LazyMap版调用链LazyMap构造payloadCC1的调用链 系列篇其他文章&#xff0c;推荐顺序观看~ Java反序列化利用链篇 | JdbcRowSetImpl利用链分析Java反序列化利用链篇 | CC1链_全网最菜的分析思路【本系列文章的分析重点】Java反序列化利用链篇 | CC1…

Maven进阶-二、依赖

Maven进阶 第一章 Maven依赖 文章目录 Maven进阶前言依赖传递依赖优先级可选依赖排除依赖总结 前言 maven管理项目时&#xff0c;各包之间相互依赖&#xff0c;该篇简单记录对maven依赖的学习认知。 在使用maven导入依赖时&#xff0c;可以看到有的依赖包下有二级目录&#x…

传输层 III(TCP协议——可靠传输)【★★★★】

&#xff08;★★&#xff09;代表非常重要的知识点&#xff0c;&#xff08;★&#xff09;代表重要的知识点。 一、可靠传输的工作原理 我们知道&#xff0c; TCP 发送的报文段是交给 IP 层传送的。但 IP 层只能提供尽最大努力服务&#xff0c;也就是说&#xff0c; TCP 下面…

【人工智能】在大型活动中的应用案例

人工智能在娱乐大型活动中的应用 ## 作者主页: 知孤云出岫 目录 **人工智能在娱乐大型活动中的应用****1. 引言****2. 智能票务与入场管理****2.1 动态定价与票务预测****2.2 生物识别技术快速入场****2.3 区块链技术防伪票务管理** **3. 智能观众互动与个性化体验****3.1 个性…

神经网络面试题目

1. 批规范化(Batch Normalization)的好处都有啥&#xff1f;、 A. 让每一层的输入的范围都大致固定 B. 它将权重的归一化平均值和标准差 C. 它是一种非常有效的反向传播(BP)方法 D. 这些均不是 正确答案是&#xff1a;A 解析&#xff1a; ‌‌‌‌  batch normalization 就…