# Equal Sides Of An Array in Java ## The challenge

You are going to be given an array of integers. Your job is to take that array and find an index N where the sum of the integers to the left of N is equal to the sum of the integers to the right of N. If there is no index that would make this happen, return `-1`.

### For example:

Let’s say you are given the array `{1,2,3,4,3,2,1}`:
Your function will return the index `3`, because at the 3rd position of the array, the sum of left side of the index (`{1,2,3}`) and the sum of the right side of the index (`{3,2,1}`) both equal `6`.

### Let’s look at another one.

You are given the array `{1,100,50,-51,1,1}`:
Your function will return the index `1`, because at the 1st position of the array, the sum of left side of the index (`{1}`) and the sum of the right side of the index (`{50,-51,1,1}`) both equal `1`.

### Last one:

You are given the array `{20,10,-80,10,10,15,35}`
At index 0 the left side is `{}`
The right side is `{10,-80,10,10,15,35}`
They both are equal to  when added. (Empty arrays are equal to 0 in this problem)
Index 0 is the place where the left side and right side are equal.

Note: Please remember that in most programming/scripting languages the index of an array starts at 0.

### Input:

An integer array of length `0 < arr < 1000`. The numbers in the array can be any integer positive or negative.

### Output:

The lowest index `N` where the side to the left of `N` is equal to the side to the right of `N`. If you do not find an index that fits these rules, then you will return `-1`.

### Note:

If you are given an array with multiple answers, return the lowest correct index.

See also  Calculate the Volume of a Cuboid in Java

## The solution in Java code

Option 1:

```.wp-block-code {
border: 0;
}

.wp-block-code > div {
overflow: auto;
}

.shcb-language {
border: 0;
clip: rect(1px, 1px, 1px, 1px);
-webkit-clip-path: inset(50%);
clip-path: inset(50%);
height: 1px;
margin: -1px;
overflow: hidden;
position: absolute;
width: 1px;
word-wrap: normal;
word-break: normal;
}

.hljs {
box-sizing: border-box;
}

.hljs.shcb-code-table {
display: table;
width: 100%;
}

.hljs.shcb-code-table > .shcb-loc {
color: inherit;
display: table-row;
width: 100%;
}

.hljs.shcb-code-table .shcb-loc > span {
display: table-cell;
}

.wp-block-code code.hljs:not(.shcb-wrap-lines) {
white-space: pre;
}

.wp-block-code code.hljs.shcb-wrap-lines {
white-space: pre-wrap;
}

.hljs.shcb-line-numbers {
border-spacing: 0;
counter-reset: line;
}

.hljs.shcb-line-numbers > .shcb-loc {
counter-increment: line;
}

.hljs.shcb-line-numbers .shcb-loc > span {
}

.hljs.shcb-line-numbers .shcb-loc::before {
border-right: 1px solid #ddd;
content: counter(line);
display: table-cell;
text-align: right;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
white-space: nowrap;
width: 1%;
}
```public class Solution {
public static int findEvenIndex(int[] arr) {
int sum = , cSum = ;
for (int i = ; i < arr.length; i++) sum += arr[i];
for(int i = ; i < arr.length; i++){
if (cSum == sum - arr[i]) return i;
cSum += arr[i];
sum -= arr[i];
}
return -1;
}
}
```Code language: Java (java)```

Option 2:

``````import java.util.Arrays;

public class Solution {
public static int findEvenIndex(int[] arr) {
int left = ;
int right = Arrays.stream(arr).sum();
for (int i=; i<arr.length; i++){
right -= arr[i];
if (left == right) return i;
left += arr[i];
}
return -1;
}
}
```Code language: Java (java)```

Option 3:

``````import java.util.stream.IntStream;

public class Solution {
public static int findEvenIndex(int[] arr) {
return IntStream.range(, arr.length)
.filter(n -> IntStream.of(arr).limit(n).sum() == IntStream.of(arr).skip(n + 1).sum())
.findFirst().orElse(-1);
}
}
```Code language: Java (java)```

## Test cases to validate our solution

``````import static org.junit.Assert.*;
import java.util.ArrayList;
import org.junit.Test;

public class SolutionTest {
@Test
public void test() {
assertEquals(3,Solution.findEvenIndex(new int[] {1,2,3,4,3,2,1}));
assertEquals(1,Solution.findEvenIndex(new int[] {1,100,50,-51,1,1}));
assertEquals(-1,Solution.findEvenIndex(new int[] {1,2,3,4,5,6}));
assertEquals(3,Solution.findEvenIndex(new int[] {20,10,30,10,10,15,35}));
assertEquals(-1,Solution.findEvenIndex(new int[] {-8505, -5130, 1926, -9026}));
assertEquals(1,Solution.findEvenIndex(new int[] {2824, 1774, -1490, -9084, -9696, 23094}));
assertEquals(6,Solution.findEvenIndex(new int[] {4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4}));
}
}
```Code language: Java (java)```

Tags:
Subscribe
Notify of 