题解 | #最长无重复子数组#
最长无重复子数组
http://www.nowcoder.com/practice/b56799ebfd684fb394bd315e89324fb4
1.统计不重复的长度
2.删除上次发生重复的数字之前的数
import java.util.HashMap; import java.util.Map; public class Solution { public int maxLength(int[] arr) { Map<Integer, Integer> m = new HashMap<>(); int max = 0; int cur = 0; int j = 0; for (int i = 0; i < arr.length; i++) { int index = m.getOrDefault(arr[i], -1); if ( index == -1) { cur++; m.put(arr[i], i); if (cur > max) max = cur; } else { if (cur > max) max = cur; m.put(arr[i], i); for (; j < index; j++) { if (m.getOrDefault(arr[j], -1) == j) { m.remove(arr[j]); } } cur = i - index; } } return max; } public static void main(String[] args) { int[] arr = {2,2,3,4,3}; // int[] arr = {2,3,4,5}; System.out.println(new Solution().maxLength(arr)); } }