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

最长无重复子数组

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

import java.util.*;


public class Solution {
    /**
     * 
     * @param arr int整型一维数组 the array
     * @return int整型
     */
    public int maxLength (int[] arr) {
        // 用map存储已存在数据
        HashMap<Integer,Integer> map = new HashMap();

        // 采用动态区间存储,count为hashmap数据类型个数
        int i = 0,j = 0;

        int count = 0;
        int max = 0;

        while(j < arr.length){
            // 若不存在,count++,并加入map
            if(!map.containsKey(arr[j])){
                map.put(arr[j],1);
                count++;
                // 如果存储个数超过最大值,更改max
                if(count > max){
                    max = count;
                }
            }else{
                // 若存在,i后移并删除对应map
                while(arr[i] != arr[j]){
                    map.remove(arr[i]);
                    count--;
                    i++;
                }
                // 再将i进一位保证无重复元素
                i++;
            }
            j++;
        }

        return max;

    }
}

全部评论

相关推荐

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