判断Int型数组中的唯一值,就用异或来把数组中的每一个值进行比较即可

it2026-01-03  7

判断Int型数组中的唯一值,就用异或来把数组中的每一个值进行比较即可

利用异或算法的特性,可以快速简便的查找出数组中的唯一值。下面的方法只适用于数组除了一个一次值,剩余的值都是重复两次值的情况,类似如[4,2,2,3,3]、[5,4,4,6,6]

异或算法

^为异或,计算时先把两个数转换为二进制,再进行计算。 两个不同的值异或结果为1,两个相同的数异或后值为0 所以判断Int型数组中的唯一值,就用异或来把数组中的每一个值进行比较即可。

java实现
/** * ^为异或,计算时先把两个数转换为二进制,再进行计算。 * 两个不同的值异或结果为1,两个相同的数异或后值为0 * 所以判断Int型数组中的唯一值,就用异或来把数组中的每一个值进行比较即可。 * @param A int整型一维数组 * @return int整型 */ public int singleNumber (int[] A) { // write code here int sum=A[0]; for(int i=1;i<A.length;i++){ sum^=A[i]; } return sum; }
Kolin实现
/** * ^为异或,计算时先把两个数转换为二进制,再进行计算。 * 两个不同的值异或结果为1,两个相同的数异或后值为0 * 所以判断Int型数组中的唯一值,就用异或来把数组中的每一个值进行比较即可。 * @param A int整型一维数组 * @return int整型 */ private fun singleNumber(A: IntArray):Int{ // write code here var sum = A[0] //4 for (i in 1 until A.size) { sum = sum xor A[i] } return sum }

判断数组:[4,2,2] 输出:4

判断数组:[5,6,5] 输出:6

最新回复(0)