【华为OJ】201301 JAVA 题目0-1级 将数组分为相等的两组
package issplittwointarray;import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int arrayLength = sc.nextInt();
int[] intArray = new int;
for(int i = 0; i < intArray.length; i++){
intArray = sc.nextInt();
}
boolean isSplitTwoEqualArrays = Main.isSplitTwoEqualArray(intArray);
System.out.println(isSplitTwoEqualArrays);
}
public static boolean isSplitTwoEqualArray(int[] intArray){
int multipleOfFiveSum = 0;
int multipleOfThreeSum = 0;
ArrayList<Integer> otherInts = new ArrayList<Integer>();
for(int i = 0; i < intArray.length; i++){
if(intArray % 5 == 0){
multipleOfFiveSum += intArray;
} else if(intArray % 3 == 0){
multipleOfThreeSum += intArray;
} else {
otherInts.add(intArray);
}
}
int difference = multipleOfFiveSum - multipleOfThreeSum;
ArrayList<Integer> accumulationSum = new ArrayList<Integer>();
accumulationSum.add(0);
for (Integer otherInt : otherInts) {
accumulationSum = Main.expressionsAccumulation(accumulationSum, otherInt);
}
for (Integer sum : accumulationSum) {
if((sum == difference) || (sum == difference * (-1)))
return true;
}
return false;
}
public static ArrayList<Integer> expressionsAccumulation(ArrayList<Integer> preSums, int extraInt){
ArrayList<Integer> accumulationSum = new ArrayList<Integer>();
for (Integer preSum : preSums) {
accumulationSum.add(preSum + extraInt);
accumulationSum.add(preSum - extraInt);
}
return accumulationSum;
}
}
页:
[1]