56 lines
1.6 KiB
Java
56 lines
1.6 KiB
Java
// Alejandro Santillana
|
|
/*
|
|
* given an array of int values,
|
|
* is there a index in the array where the sum of values[0 .. index]
|
|
* is equal to (or balances) the sum of values[index+1 .. length-1]
|
|
* look at the examples below
|
|
* Your task: design and code the canBalance methods that returns true or false
|
|
* the program should be efficient.
|
|
* can you solve the problem without using nested loops? 1 loop? 2 loops?
|
|
* Then run the program to see if your method works correctly.
|
|
*/
|
|
|
|
public class CanBalance {
|
|
|
|
public static void main(String[] args) {
|
|
boolean r;
|
|
r = canBalance(new int[] {1, 1, 1, 2, 1});
|
|
System.out.println("canBalance( [1, 1, 1, 2, 1] ) should be true. You returned "+r);
|
|
|
|
r = canBalance(new int[] {2, 1, 1, 2, 1 });
|
|
System.out.println("canBalance( [2, 1, 1, 2, 1]) should be false. You returned "+r);
|
|
|
|
r = canBalance(new int[] {10, 10});
|
|
System.out.println("canBalance( [10,10]) should be true. You returned "+r);
|
|
|
|
r = canBalance(new int[] {10, 0, 1, -1, 10} );
|
|
System.out.println("canBalance([10, 0, 1, -1, 10]) should be true. You returned "+r);
|
|
|
|
r = canBalance(new int[] { 1});
|
|
System.out.println(" should be false. You returned "+r);
|
|
|
|
r = canBalance(new int[] {2, 1, 1, 1, 1});
|
|
System.out.println("canBalance([2, 1, 1, 1, 1]) should be true. You returned "+r);
|
|
|
|
}
|
|
|
|
public static boolean canBalance(int[] a) {
|
|
int sum_a = 0;
|
|
int sub_b = 0;
|
|
|
|
for(int i =0;i<a.length();i++) {
|
|
sum_a += a[i];
|
|
sum_b = 0;
|
|
|
|
for(int j =i+1;j<=a.length();j++) {
|
|
sum_b = a[j];
|
|
if(sum_b == sum_b) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
}
|