查找数组的相对“平衡点”
http://blog.csdn.net/qq_24885695/article/details/75268318
题目:根据一个数组,找出其平衡点,也就是该点左边的和等于右边的和。一个数组可能有多个平衡点。
注意:数组至少有3个元素,才能有平衡点存在
import java.util.Scanner;
public class FindBalancePoint {
public static boolean findBalancePoint(int[] arr) {
int sum = 0;
boolean hasPoint = false;//判断是否有平衡点
if( arr.length <= 2 ){
System.out.println("输入不符合要求,无平衡点");
}
else{
for(int i = 0 ; i < arr.length ; i++)
sum += arr[i];
int sumLeft = 0;//左边的和
int sumRight = sum - arr[0];//右边的和
for(int j = 1 ; j < arr.length ; j++){
sumLeft += arr[j-1];
sumRight -= arr[j];
if(sumLeft != sumRight)
continue;
else{
System.out.print(arr[j]+" ");
hasPoint =true;
}
}
}
return hasPoint;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个数组,并用逗号隔开(至少包含三个元素):");
String inputString = sc.next();
String[] stringArray = inputString.split(",");
int length = stringArray.length;
int[] arr = new int[length];
for(int i = 0;i<length;i++){
arr[i]=Integer.parseInt(stringArray[i]);
}
if(!findBalancePoint(arr))
System.out.println("输入的数组无平衡点");
sc.close();
}
}