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()
}