我需要检查两个数组是否包含相同的数字。所以:
[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/