package suanfa.array;
import java.util.ArrayList;
import java.util.List;
/**
给定一个无序数组arr, 其中元素可正、可负、可0。给定一个整数k,求arr所有子数组中累加和为k的最长子数组长度
/
public class MaxlenEqualK {
public static void main(String[] args) {int[] arr = new int[]{1, -2, 1, 1, 1}; int k = 0; int result = maxlenEqualK(arr, k);
}
public static int maxlenEqualK(int[] arr, int k) {
int maxLength = 0; for (int left = 0; left < arr.length; left++) { if (maxLength > arr.length - left) { break; } List<Integer> list = new ArrayList<>(); list.add(left); int tmp = arr[left]; int right = left + 1; while (right < arr.length) { list.add(right); tmp += arr[right]; if (tmp == k) { maxLength = Math.max(maxLength, list.size()); } right++; } } return maxLength;
}
}