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

最长无重复子数组

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

创建一个list保存不重复元素的子数组。遍历数组,如果list中与新加的元素重复,从list左边开始收缩,直到数组中不在存在重复元素;如果没有重复,继续添加到list中。每次比较数组长度,取最大长度。

import java.util.*;


public class Solution {
    /**
     * 
     * @param arr int整型一维数组 the array
     * @return int整型
     */
    public int maxLength (int[] arr) {
        // write code here
        List<Integer> list = new ArrayList<>();
        int max = 0;
        for(int i = 0;i<arr.length;i++){
            int a = arr[i];
            if(list.contains(a)){
                while(a != list.get(0)){
                    list.remove(0);
                }
                list.remove(0);
            }
            list.add(a);
            max = Math.max(max, list.size());
        }
        return max;
    }
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务