Equilibrium Index

So I was trying out codility a while ago and was presented this simple problem.

So the goal is to find the equilibrium index in the array ex. [1,2,5,0,3];

In our example, the equilibrium index is the index 2 (starts with zero) which is the value 5.

It is the equilibrium because, the array values on both sides are both equal (equals to 3).

Solution:

So my approach to this is to…

  1. Add all the values in the array.
  2. We will have LEFT = zero and RIGHT = all the array values.
  3. And then, we start with the next element (start from first)
  4. Compare values of left and right, if equal, return the current index.
  5. Add the current element to the LEFT and subtract it to the RIGHT.
  6. repeat STEP 3.

Source:

[pastacode lang=”markup” manual=”class%20Solution%20%7B%0A%20%20%20%20public%20int%20solution(int%5B%5D%20A)%20%7B%0A%0A%20%20%20%20%20%20%20%20long%20left%20%3D%200%3B%0A%20%20%20%20%20%20%20%20long%20right%20%3D%200%3B%0A%0A%20%20%20%20%20%20%20%20%2F*compute%20all%20right*%2F%0A%20%20%20%20%20%20%20%20for(int%20a%3D0%3Ba%3CA.length%3Ba%2B%2B)%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20right%20%3D%20right%20%2B%20A%5Ba%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20for(int%20a%3D0%3Ba%3CA.length%3Ba%2B%2B)%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20long%20cur%20%3D%20A%5Ba%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20if(left%3D%3Dright-cur)%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20a%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20left%20%3D%20left%20%2B%20cur%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20right%20%3D%20right%20-%20cur%3B%0A%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20return%20-1%3B%0A%20%20%20%20%7D%0A%7D%0A” message=”” highlight=”” provider=”manual”/]