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