【发布时间】:2015-01-27 23:39:20
【问题描述】:
我已经为以下问题陈述了一个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;
}
}
【问题讨论】:
-
第二步 - 格式化你的代码。
标签: java arrays testing puzzle