zero subarray sum 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)