最长无重复子数组

413 阅读1分钟

1.思路

  • 子数组是原数组连续的元素组成的数组
  • 无重复是指所有的元素都不相同
  • 通过链表来存子数组
  • 双循环来删掉上一轮子数组中重复值以前的所有数据

2.代码

import java.util.*;
public class Solution {
    public int maxLength (int[] arr) {
    int count=0;//记录无重复子数组的长度最大值
    LinkedList<Integer> list = new LinkedList<Integer>();//存放子数组
    for(int i = 0;i<arr.length;i++){
        if(list.contains(arr[i])){//碰到重复值,删掉在list中重复值之前所有的数据
            for(int j = list.indexOf(arr[i]);j>=0;j--){
                list.removeFirst();
            }
        }
        list.add(arr[i]);//不重复就往list里面添加
        count = Math.max(count,list.size());//和自己比,更新最大值
    }
    return count;
}