我遇到了这个问题:
给定两个数字数组,找出这两个数组中的每一个是否具有相同的整数集。
N * log(N)
建议一种比没有额外空间运行得更快的算法。
链接在这里
但是在阅读了上述链接的所有答案之后,我没有找到我遇到的这个简单的答案,这里是......
int main(){
int a[] = {1,5,5,7,5,6,6};
int b[] = {1,6,6,5,7,5,9};
int i = 0;
int size = 0;
int xor_ab = a[0]^b[0];
int sumDiff_ab = (a[0] - b[0]);;
if(sizeof(a)/sizeof(a[0]) == sizeof(b)/sizeof(b[0])){
size = sizeof(a)/sizeof(a[0]);
}else{
printf("not identical : array size differ");
return 0;
}
for(i=1; i < size ; ++i){
xor_ab = xor_ab ^ a[i] ^ b[i];
sumDiff_ab += (a[i] - b[i]);
}
if(xor_ab == 0 && sumDiff_ab == 0){
printf("identical");
}else{
printf("not identical");
}
return 0;
}
现在我想知道,我的解决方案是否适用于所有用例。如果没有,请让我知道这样的用例。
[编辑]
请考虑数组中的所有数字都是 +ve。
[接受答案]
我接受了@Boris Strandjev 的回答,
我的解决方案不适用于以下情况
{3,5}
{1,7}