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

时间:2015-01-27 14:53:53

标签: java arrays testing puzzle

我为以下问题陈述制作了一个java程序 -

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

输入:整数数组

输出:

"是" -if set可分为两个相等的总和,

"否" -if不能分成两个相等的和,

"无效" -if整数数组包含任何其他类型的整数(正整数除外)

并且我已经将代码提交给在线编译器,并且我编写的代码已经通过了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;
    }
}

1 个答案:

答案 0 :(得分:0)

一个失败的测试用例是由以下组成的数组:

4 8 4