NC41 最长无重复子数组
描述
给定一个数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字都不相同。
子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组
import java.util.*;
public class Solution {
/**
*
* @param arr int整型一维数组 the array
* @return int整型
*/
public int maxLength (int[] arr) {
// write code here
Set<Integer> list = new HashSet<Integer>() ;
//Arrays.sort(arr) ;
int left = 0 , right = 0 ;
int maxlen = 0 ;
while(right < arr.length){
while(list.contains(arr[right])){
list.remove(arr[left++]) ;
}
list.add(arr[right++]) ;
maxlen = Math.max(maxlen , right - left) ;
}
return maxlen ;
}
}
这篇博客介绍了如何解决寻找给定数组中最长无重复元素子数组的问题。作者提供了一个Java解决方案,利用HashSet存储子数组的元素,通过滑动窗口的方法找到最长的无重复子数组,同时更新最大长度。算法的时间复杂度为O(n)。
669

被折叠的 条评论
为什么被折叠?



