描述
给定一个数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字都不相同。
子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组
数据范围:,
要求:空间复杂度O(n) ,时间复杂度 O(nlogn)
方法:使用队列,不断往队列中加入元素,当加入重复元素时,把队首元素移除
public class Solution{
public int maxLength (int[] arr){
创建队列
Queue queue=new linkedList<>();
int res=0;
循环数组元素
for(int i:arr){
往队列添加元素 并判断是否有重复元素
while(queue.contains(i)){
queue.poll();
}
queue.add(i)
记录元素个数
res=Math.max(res,queue.size)
}
return res;
}
}
当输入数组 arr=[2,3,4,5]
输出:4



