zero sum subarrays code example

Example 1: Zero Sum Subarrays

public static long findSubarray(long[] arr ,int n) 
    {
        HashMap<Long, Integer> m = new HashMap<>();
        long sum = 0;
        long counter = 0;
        m.put((long) 0, 1);
        for (int i = 0; i < n; i++) {
            sum += arr[i];
            if (m.containsKey(sum) || sum == 0) {
                counter += m.get(sum);
                m.replace(sum, m.get(sum) + 1);
            } else {
                m.put(sum, 1);
            }
        }
        return counter;
    }

Example 2: Function to print all subarrays with a zero-sum in a given array

# Utility function to insert <key, value> into the dictionary
def insert(dict, key, value):
 
    # if the key is seen for the first time, initialize the list
    dict.setdefault(key, []).append(value)
 
 
# Function to print all sublists with a zero-sum present in a given list
def printallSublists(A):
 
    # create an empty dictionary to store the ending index of all
    # sublists having the same sum
    dict = {}
 
    # insert `(0, -1)` pair into the dictionary to handle the case when
    # sublist with zero-sum starts from index 0
    insert(dict, 0, -1)
 
    sum = 0
 
    # traverse the given list
    for i in range(len(A)):
 
        # sum of elements so far
        sum += A[i]
 
        # if the sum is seen before, there exists at least one
        # sublist with zero-sum
        if sum in dict:
 
            list = dict.get(sum)
 
            # find all sublists with the same sum
            for value in list:
                print("Sublist is", (value + 1, i))
 
        # insert (sum so far, current index) pair into the dictionary
        insert(dict, sum, i)

Tags:

Misc Example