Count Number of Sub Arrays With Odd Sum

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);
    }
}
package org.wesome.dsalgo;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

public class SubArraysWithOddSumTest {
    @Test
    void subArraysWithOddSumTest() {
        int arr[] = {1};
        Assertions.assertEquals(1, SubArraysWithOddSum.subArraysWithOddSum(arr));
    }

    @Test
    void subArraysWithOddSumTest1() {
        int arr[] = {5, 4, 4, 5, 1, 3};
        Assertions.assertEquals(12, SubArraysWithOddSum.subArraysWithOddSum(arr));
    }

    @Test
    void subArraysWithOddSumTest2() {
        int arr[] = {3, 5, 4, 4, 5, 1, 3};
        Assertions.assertEquals(15, SubArraysWithOddSum.subArraysWithOddSum(arr));
    }

    @Test
    void subArraysWithOddSumTest3() {
        int arr[] = {1, 3, 5, 7, 9};
        Assertions.assertEquals(9, SubArraysWithOddSum.subArraysWithOddSum(arr));
    }

    @Test
    void subArraysWithOddSumTest4() {
        int arr[] = {0, 2, 4, 6, 8};
        Assertions.assertEquals(0, SubArraysWithOddSum.subArraysWithOddSum(arr));
    }
}
plugins {
    id 'java'
    id "io.freefair.lombok" version "6.2.0"
}

group = 'org.wesome'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = JavaVersion.VERSION_1_8

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter:5.6.2'
}

test {
    useJUnitPlatform()
}

 

follow us on