Skip to content

Instantly share code, notes, and snippets.

@ronbeltran
Created April 19, 2012 07:16
Show Gist options
  • Save ronbeltran/2419337 to your computer and use it in GitHub Desktop.
Save ronbeltran/2419337 to your computer and use it in GitHub Desktop.
Equilibrium index
/* http://rosettacode.org/wiki/Equilibrium_index
* Assume the sum of zero element is equal to zero. Write a function
* that given a sequence, returns its equilibrium index (any) or -1
* if no equilibrium indexes exist. Assume that the sequence may be very long.
*/
public class Equi {
private int array[];
private int index;
public Equi(int array[]){
this.array = array;
}
public void setIndex(int index){
this.index = index;
}
public boolean isEqui(){
int prefix_sum = 0;
int suffix_sum = 0;
boolean result = false;
if(index == 0){
prefix_sum = 0;
for(int c = index + 1; c < array.length; c++){
suffix_sum += array[c];
}
if(prefix_sum == suffix_sum){
result = true;
}
} else if(index == (array.length - 1)){
suffix_sum = 0;
for(int c = 0; c < index; c++){
prefix_sum += array[c];
}
if(prefix_sum == suffix_sum){
result = true;
}
}
else {
for(int c=0;c<index;c++){
prefix_sum += array[c];
}
for(int c=index+1;c<array.length;c++){
suffix_sum += array[c];
}
if(prefix_sum == suffix_sum){
result = true;
}
}
return result;
}
public static void main(String args[]) {
int array[] = {-7, 1, 5, 2, -4, 3, 0};
Equi eq = new Equi(array);
for(int counter=0; counter<array.length; counter++){
eq.setIndex(counter);
if(eq.isEqui())
System.out.println("Equilibrium index at: [" + counter + "]");
}
}//end main
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment