题解 | #最长无重复子数组#

最长无重复子数组

https://www.nowcoder.com/practice/b56799ebfd684fb394bd315e89324fb4

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param arr int整型一维数组 the array
     * @return int整型
     */
    public int maxLength (int[] arr) {
        int maxLen=1;
        int len=arr.length;
        if(len==0)return 0;
        HashSet<Integer>set=new HashSet<>();
        int left=0,right=0; //滑动窗口,右指针的元素加入set
        while(right<len){
            while(set.contains(arr[right])){ //右指针添加时发现重复的元素
                set.remove(arr[left++]); //删除左指针的元素,同时左指针右移,直到右指针添加元素是不重复的!
            }
            set.add(arr[right++]); //右指针的元素加入set
            if(set.size()>maxLen)maxLen=set.size();
        }
        return maxLen;
    }
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务