首页 > 试题广场 >

最长无重复子数组

[编程题]最长无重复子数组
  • 热度指数:331551 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个长度为n的数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字都不相同。
子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组

数据范围:
示例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]     
头像 数据结构和算法
发表于 2021-04-02 13:38:48
精华题解 1,解法一 我们使用两个指针,一个i一个j,最开始的时候i和j指向第一个元素,然后i往后移,把扫描过的元素都放到map中,如果i扫描过的元素没有重复的就一直往后移,顺便记录一下最大值max,如果i扫描过的元素有重复的,就改变j的位置,我们就以pwwkew(这是之前画的图,求的是字符串,不是数字,这里 展开全文
头像 LaN666
发表于 2020-11-25 21:21:16
精华题解 方法一:滑动窗口法 算法思路 我们可以利用双指针模拟一个滑动窗口。初始化该窗口为(left, right]。所以left从-1开始。窗口不断往右扩大。因为我们要的是无重复子数组,因此,遇到有重复的数字,在窗口左侧进行缩小。在每次滑动时,对窗口的大小进行比较,保留最大的长度。 代码实现 impo 展开全文
头像 牛客题解官
发表于 2022-04-22 13:05:47
精华题解 题目主要信息: 题目给定一个数组,要找到其中最长的无重复的子数组的长度 子数组必须是数组中连续的一段 举一反三: 学习完本题的思路你可以解决如下题目: BM90. 最小覆盖子串 方法:滑动窗口(推荐使用) 知识点1:滑动窗口 滑动窗口是指在数组、字符串、链表等线性结构上的一段,类似一个窗口,而这 展开全文
头像 蒙牛麦片
发表于 2021-07-22 18:19:31
精华题解 NC41 最长无重复子数组 题意分析: 找出最长的子数组的长度,要求该子数组中没有重复元素。 题解一(暴力): 找出所有的没有重复元素的子数组,然后比较他们的长度。 超时。 题解二(双指针): 我们设置两个指针left和right,表示子数组的左端点和右端点,用一个set统计left-right中所 展开全文
头像 Edwin_Xu
发表于 2020-08-25 00:09:04
public int maxLength (int[] arr) { HashMap<Integer,Integer> map = new HashMap<>(); int max = 1; for(int start = 0, end = 0; en 展开全文
头像 poooker
发表于 2020-10-09 16:23:53
条件: 设置两个指针/索引,left = 0 right = 1; map<int,int>,记录数组元素的 值-索引: value:index 设定: left到right之间的元素为连续不重复; map中存放left到right间元素的 值-索引 对; 初始left rig 展开全文
头像 博菲特儿~
发表于 2020-09-21 23:19:46
两种解法思路差不多: 对数组遍历, 并使用临时数组保存遍历过的元素, 如果元素出现,则比较并保存当前的最大长度,同时临时序列保留相同元素后的无重复序列继续遍历 使用双指针,如果新的元素 与起止指针范围内的元素重复,就暂存当前的无重复序列长度, 并将起始指针移动到重复元素后 class Solu 展开全文
头像 超级码力233
发表于 2020-11-26 18:57:58
找到字符串的最长无重复字符子串 题目链接 Solution 寻找最长的无重复子串。考虑以一个位置结尾的可以往前延伸到的位置,根据此位置求出无重复子串的长度。具体操作可以记录一个指针,这个指针记录到当前位置时,可以往前延伸的最前的位置。考虑如何更新指针,从一个位置到下一个位置时,加入了一个数a: 如 展开全文
头像 THE_LIN
发表于 2020-09-17 11:35:21
#include<unordered_map> class Solution { public:     int maxLength(vector<int>& arr) { &n 展开全文
头像 小洋芋热爱NLP
发表于 2021-01-26 00:25:23
- 1、题目描述: - 2、题目链接:https://www.nowcoder.com/practice/b56799ebfd684fb394bd315e89324fb4?tpId=117&rp=1&ru=%2Factivity%2Foj&qru=%2Fta%2Fjob-c 展开全文
头像 牛客634585094号
发表于 2021-09-20 16:27:08
# 假设数据[1,2,3,4,2,3] 读到[1,2,3,4],此时新的数据应该为[3,4,2]--- # @return int整型 # class Solution: def maxLength(self , arr ): tmp,l=[],0 for i 展开全文
头像 1807310129-邓俊华
发表于 2021-09-18 00:34:27
# # # @param arr int整型一维数组 the array # @return int整型 # 对于这一道题最先想到的方法就是枚举,我们可以尝试把数组中每一个元素都当作开头,一个一个去试 # 假设有数组[1, 2, 5, 2 ,3] # 思路:那么它的最长无重复子数组要么就是以1 展开全文
头像 1号牛客
发表于 2020-09-17 10:32:48
笨鸟先飞1、固定一个元素向后看,遇到重复的终止2、max记录最大值,Set用来判重3、leftIndex 用来记录左边的界限 import java.util.*; public class Solution { /** * * @param arr int整型一维 展开全文
头像 小熊_008
发表于 2021-07-13 22:19:13
class Solution { public: /** * * @param arr int整型vector the array * @return int整型 */ int maxLength(vector<int>& 展开全文

问题信息

难度:
439条回答 18614浏览

热门推荐

通过挑战的用户

查看代码