Skip to main content

Command Palette

Search for a command to run...

LargestZeroSumSubarray

Published
1 min readView as Markdown
import java.util.HashMap;

public class LargestZeroSumSubarray {
    public static int maxZeroSumLength(int[] arr) {
        HashMap<Integer, Integer> prefixIndexMap = new HashMap<>();
        int sum = 0, maxLen = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
            if (sum == 0) {
                maxLen = i + 1;
            } else if (prefixIndexMap.containsKey(sum)) {
                int prevIndex = prefixIndexMap.get(sum);
                maxLen = Math.max(maxLen, i - prevIndex);
            } else {
                prefixIndexMap.put(sum, i);
            }
        }
        return maxLen;
    }

    public static void main(String[] args) {
        int[] arr = {15, -2, 2, -8, 1, 7, 10, 23};
        System.out.println("Length of largest zero-sum subarray: " + maxZeroSumLength(arr));
        // Expected output: 5 (subarray from index 1 to 5: [-2, 2, -8, 1, 7])
    }
}

More from this blog

Amit singh's blog

235 posts