Java 查找sum=K的子数组(连续)的数量(考虑时间复杂度)

Java 查找sum=K的子数组(连续)的数量(考虑时间复杂度),java,sub-array,Java,Sub Array,我试图找到等于给定和K的子数组的数量。例如,当我有一个arr=[1,-1,1,-1,1]时,我创建了一个新数组,这样: int[] s = new int[arraySize + 1]; s[0] = 0; for (int i = 1; i <= arraySize; i++) { s[i] = s[i - 1] + arr[i - 1]; } 要计算总和为K=0的子阵列,请执行以下操作:

我试图找到等于给定和K的子数组的数量。例如,当我有一个arr=[1,-1,1,-1,1]时,我创建了一个新数组,这样:

        int[] s = new int[arraySize + 1];

        s[0] = 0;

        for (int i = 1; i <= arraySize; i++) {
            s[i] = s[i - 1] + arr[i - 1];
        }
要计算总和为K=0的子阵列,请执行以下操作:

        for (int i = arraySize; i > 0; i--) {
            for (int j = i; j > 0; j--) {
                if (subArrays[i] - subArrays[j - 1] == 0) {
                    counter++;
                }
                else {
                    continue;
                }
            }
        }
这将返回正确的输出=6个可能的子数组

但是,是否有一种方法可以提高时间复杂度,使其所需时间小于O(n^2),如上述方法所示?(不使用map或hashmap)

        for (int i = arraySize; i > 0; i--) {
            for (int j = i; j > 0; j--) {
                if (subArrays[i] - subArrays[j - 1] == 0) {
                    counter++;
                }
                else {
                    continue;
                }
            }
        }