publicstaticintmaxLength(int[] arr, int k){ if (arr == null || arr.length == 0) { return0; } //这个map表示key第一次出现在value下标的位置 HashMap<Integer, Integer> map = new HashMap<>(); //表示 合为0 第一次出现在-1位置 map.put(0, -1);
int len = 0; int sum = 0; for (int i = 0; i < arr.length; i++) { sum += arr[i]; if (map.containsKey(sum - k)) { len = Math.max(i - map.get(sum - k), len); } if (!map.containsKey(sum)) { map.put(sum, i); } } return len; }