判断Int型数组中的唯一值,就用异或来把数组中的每一个值进行比较即可
利用异或算法的特性,可以快速简便的查找出数组中的唯一值。下面的方法只适用于数组除了一个一次值,剩余的值都是重复两次值的情况,类似如[4,2,2,3,3]、[5,4,4,6,6]
异或算法
^为异或,计算时先把两个数转换为二进制,再进行计算。 两个不同的值异或结果为1,两个相同的数异或后值为0 所以判断Int型数组中的唯一值,就用异或来把数组中的每一个值进行比较即可。
java实现
public int singleNumber
(int[] A
) {
int sum
=A
[0];
for(int i
=1;i
<A
.length
;i
++){
sum
^=A
[i
];
}
return sum
;
}
Kolin实现
private fun singleNumber(A
: IntArray
):Int
{
var sum
= A
[0]
for (i
in 1 until A
.size
) {
sum
= sum
xor A
[i
]
}
return sum
}
判断数组:[4,2,2] 输出:4
判断数组:[5,6,5] 输出:6