java - 为什么要乘而不是求和

标签 java arrays math

我需要检查两个数组是否包含相同的数字。所以:

[1,1,2] and [1,2,2] = false;
[2,3,1] and [1,2,3] = true;
[1,2,4] and [1,3,2] = false;
[1,1,4] and [1,2,3] = false;

现在不知怎么的,乘法是有效的:

boolean areSimilar(int[] a, int[] b) {
    int s1 = 1, s2 = 1;
    for(int i = 0; i < a.length; i++) {
        s1 *= a[i];
        s2 *= b[i];
    }
    return s1 == s2;
}

但是如果我用 += 替换 *=,那么就可以了,[1,1,4] 和 [1,2,3 ] 将返回 true 而不是 false(显然,因为它将返回 6 等于 6)。

所以我的问题是,我能否确保乘法是防错的? 或者通过乘法有可能两个数组包含不同的数字但具有相同的乘积吗?

最佳答案

我很确定产品可能是相同的,只是其中的数字不同。示例:[9 1 2] [18 1 1]

我会建议一个不同的解决方案。

当您第一次对数组进行排序时,您可以检查每个数字是否相同。

关于java - 为什么要乘而不是求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48823017/

相关文章:

java - Android、Java - 使用位图帧渲染视频以反转视频 (Xuggler)

java - 如何根据使用的带宽监控正在使用的端口?

java - Hibernate @ManyToMany 在插入的拥有端插入 0

javascript - 从对象数组中提取属性并存储在另一个对象数组中

c - 打印字符串中的一个字符

java - log4j 2 : log file being created, 但未写入

java - if 语句中的哨兵号

algorithm - 大数的数学表示?

math - 高级矩形碰撞处理

algorithm - 整个算法的时间复杂度是多少?