diff --git a/core-java-modules/core-java-arrays-operations-advanced-2/src/main/java/com/baeldung/equilibriumindex/EquilibriumIndexFinder.java b/core-java-modules/core-java-arrays-operations-advanced-2/src/main/java/com/baeldung/equilibriumindex/EquilibriumIndexFinder.java new file mode 100644 index 0000000000..63cf833cf7 --- /dev/null +++ b/core-java-modules/core-java-arrays-operations-advanced-2/src/main/java/com/baeldung/equilibriumindex/EquilibriumIndexFinder.java @@ -0,0 +1,24 @@ +package com.baeldung.equilibriumindex; + +import java.util.ArrayList; +import java.util.List; + +class EquilibriumIndexFinder { + + List findEquilibriumIndexes(int[] array) { + int[] partialSums = new int[array.length + 1]; + partialSums[0] = 0; + for (int i = 0; i < array.length; i++) { + partialSums[i+1] = partialSums[i] + array[i]; + } + + List equilibriumIndexes = new ArrayList(); + for (int i = 0; i < array.length; i++) { + if (partialSums[i] == (partialSums[array.length] - (partialSums[i+1]))) { + equilibriumIndexes.add(i); + } + } + return equilibriumIndexes; + } + +} diff --git a/core-java-modules/core-java-arrays-operations-advanced-2/src/test/java/com/baeldung/equilibriumindex/EquilibriumIndexFinderUnitTest.java b/core-java-modules/core-java-arrays-operations-advanced-2/src/test/java/com/baeldung/equilibriumindex/EquilibriumIndexFinderUnitTest.java new file mode 100644 index 0000000000..d34dbaade7 --- /dev/null +++ b/core-java-modules/core-java-arrays-operations-advanced-2/src/test/java/com/baeldung/equilibriumindex/EquilibriumIndexFinderUnitTest.java @@ -0,0 +1,27 @@ +package com.baeldung.equilibriumindex; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.api.Test; + +class EquilibriumIndexFinderUnitTest { + + @Test + void givenArrayHasEquilibriumIndexes_whenFindEquilibriumIndexes_thenListAllEquilibriumIndexes() { + int[] array = {1, -3, 0, 4, -5, 4, 0, 1, -2, -1}; + assertThat(new EquilibriumIndexFinder().findEquilibriumIndexes(array)).containsExactly(1, 4, 9); + } + + @Test + void givenArrayWithoutEquilibriumIndexes_whenFindEquilibriumIndexes_thenEmptyList() { + int[] array = {1, 2, 3}; + assertThat(new EquilibriumIndexFinder().findEquilibriumIndexes(array)).isEmpty(); + } + + @Test + void givenArrayWithOneElement_whenFindEquilibriumIndexes_thenListFirstIndex() { + int[] array = {5}; + assertThat(new EquilibriumIndexFinder().findEquilibriumIndexes(array)).containsExactly(0); + } + +}