Created
April 19, 2012 07:16
-
-
Save ronbeltran/2419337 to your computer and use it in GitHub Desktop.
Equilibrium index
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* 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