Java 将一组数字分成两组,使每组中的元素之和必须相等

Java 将一组数字分成两组,使每组中的元素之和必须相等,java,arrays,testing,puzzle,Java,Arrays,Testing,Puzzle,我已经为下面的问题陈述制作了一个java程序- “将一组数字分成两组,使每组中的元素之和必须相等” 输入:整数数组 输出: “是”-如果集合可以被分成两个相等的和 “否”-如果不能被分成两个相等的和 “无效”-如果整数数组包含任何其他类型的整数(正整数除外) 我已经把代码提交给了一个在线编译器,我写的代码已经通过了10个测试用例中的8个。我尽了最大努力,但是我找不到那两个失败的测试用例。失败的两个测试用例是什么?这是密码- public class CandidateCode { pu

我已经为下面的问题陈述制作了一个java程序-

“将一组数字分成两组,使每组中的元素之和必须相等”

输入:整数数组

输出:

“是”-如果集合可以被分成两个相等的和

“否”-如果不能被分成两个相等的和

“无效”-如果整数数组包含任何其他类型的整数(正整数除外)

我已经把代码提交给了一个在线编译器,我写的代码已经通过了10个测试用例中的8个。我尽了最大努力,但是我找不到那两个失败的测试用例。失败的两个测试用例是什么?这是密码-

public class CandidateCode {

    public static String partition(int[] arr) {
        int sum = getSum(arr);
        int half = sum / 2;
        int out = 0;
        int i = 0;

        boolean flag = false;
        if (hasZero(arr)) {
            return "Invalid";
        }
        if (sum % 2 != 0) {
            return "No";
        }
        if (arr.length == 2) {
            if (arr[0] == arr[1]) {
                return "Yes";
            }
            return "No";
        }

        else {

            while (i < arr.length) {
                if (arr[i] < half)
                    out += arr[i];
                if (out == half) {
                    flag = true;
                    break;
                }
                i++;
            }

        }
        if (flag)
            return "Yes";
        else
            return "No";
    }

    public static int getSum(int[] arr) {
        int result = 0;
        for (int i = 0; i < arr.length; i++) {
            result += arr[i];
        }
        return result;
    }

    public static boolean hasZero(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] <= 0) {
                return true;
            }

        }
        return false;
    }
}
公共类候选代码{
公共静态字符串分区(int[]arr){
int sum=getSum(arr);
int-half=sum/2;
int out=0;
int i=0;
布尔标志=假;
if(hasZero(arr)){
返回“无效”;
}
如果(总和%2!=0){
返回“否”;
}
如果(arr.length==2){
if(arr[0]==arr[1]){
返回“是”;
}
返回“否”;
}
否则{
而(i如果(arr[i]一个将失败的测试用例是一个由以下内容组成的数组:


4 8 4

第二次发布-格式化代码。否此测试用例没有失败,我已检查过,它返回“是”这就是预期的结果。@SBODD您能澄清一下您的要求吗?根据您的代码,我假设数组必须分区-例如,从0到N的所有元素必须加到一半。如果允许任意分区,那么我认为2 6 4 2将无法通过您的测试。“将一组数字分成两组,使每组中的元素之和必须相等”输入:整数数组输出:“是”-如果集合可以分成两个等和,“否”-如果不能分成两个等和,“无效”-如果整数数组包含任何其他类型的整数(正整数除外),这都是必需的。