我正在Java中搜索一个方法来查找数组中的数字,这与其他数字不同。这个数字也必须是其他数字的总和。
我尝试使用方法binarySearch来查找每个数字是否已经存在,但只有当唯一数字是数组的第一个元素时,它才有效。
感谢您的帮助!
public static boolean assert0() {
int uniqueNumber = -1;
for (int i = 0; i < number.length; i++) {
int numberSearched = Arrays.binarySearch(number, number[i]);
if (numberSearched < 0) {
uniqueNumber = number[i];
System.out.println("Nombre unique :" + uniqueNumber);
}
}
return true;
}
答案 0 :(得分:1)
要查找唯一值,您可以对数组进行排序。然后将所有相等的值组合在一起。如果存在,遍历数组可以为您提供唯一值。
现在最困难的部分就是总和。你想要的是等于Subset sum problem,这是NP完全的。每个找到这个问题的有效解决方案的人都将赢得图灵奖。你可以天真地做的是生成所有子集并检查它们的总和是否等于你找到的唯一值。
但如果你的意思是唯一的数字必须是所有其他数字的总和,那么这很简单。您遍历整个数组并将其余数字相加。然后检查此总和是否等于唯一元素。