java - 在数组中搜索与其他数字不同的数字

标签 java arrays algorithm math

<分区>

我正在 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;
}

最佳答案

要找到唯一值,您可以对数组进行排序。然后将所有相等的值组合在一起。如果有的话,遍历数组可以给你一个唯一的值。

现在最难的部分是求和。你想要的相当于Subset sum problem ,这是 NP 完全的。每个找到解决这个问题的有效方法的人都将获得图灵奖。您可以天真地做的是生成所有子集并检查它们的总和是否等于您找到的唯一值。

但是,如果您的意思是唯一数字必须是所有 其他数字的总和,那很容易。您遍历整个数组并对其余数字求和。然后检查此总和是否等于唯一元素。

关于java - 在数组中搜索与其他数字不同的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28659953/

相关文章:

java - cassandra 中的全表扫描问题

java - 如何用 JMenu 替换 JMenuItem(无需重新排序)

java - 创建构造函数来读取 txt 文件

java - 使用数组在两组之间进行 IPL 比赛

javascript - 从 Haml 在外部 javascript 中调用 ruby​​ 数组

java - 检索特定组合

java - 数独类谜题的笼式约束

c++ - 选择一些用格雷码编码的数字

java - 打印下面提到的数字模式的逻辑是什么

java - Windows Azure : Error when deleting brokered message