# 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 `0` 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.

## The solution in Java code

Option 1:

```.wp-block-code{border:0;padding: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;padding:0;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{padding-left:.75em}.hljs.shcb-line-numbers .shcb-loc::before{border-right:1px solid #ddd;content:counter(line);display:table-cell;padding:0 .75em;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 = 0, cSum = 0;
for (int i = 0; i < arr.length; i++) sum += arr[i];
for(int i = 0; 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 = 0;
int right = Arrays.stream(arr).sum();
for (int i=0; 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(0, 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 