package org.wesome.dsalgo;
public class SubArraysWithOddSum {
public static int subArraysWithOddSum(int[] arr) {
int subArrCount = 0, subArrSum = 0;
/* Use 2 pointer approach */
for (int startIndx = 0; startIndx < arr.length; startIndx++) {
for (int endIndx = startIndx; endIndx < arr.length; endIndx++) {
subArrSum = subArrSum + arr[endIndx];
/* if current sum is odd then only it will be considered */
if (subArrSum % 2 == 1) {
subArrCount++;
printSubArray(subArrCount, arr, startIndx, endIndx, subArrSum);
}
}
subArrSum = 0;
}
return subArrCount;
}
private static void printSubArray(int subArrCount, int arr[], int sIndex, int eIndex, int sum) {
System.out.println(subArrCount + " : From Index " + (sIndex + 1) + " To Index " + (eIndex + 1));
System.out.print("[ ");
for (int i = sIndex; i <= eIndex; i++) {
System.out.print(arr[i] + " ");
}
System.out.println("] its sum is " + sum);
}
}