一个整型数组里除了一个数字之外,其他的数字都出现了两次。请写程序找出这一个只出现一次的数字。
思路:相同的数取异或为0,而0与任何数异或为数本身
程序如下:
/**
* 只有一个数出现一次
* 时间复杂度O(1)
* 空间复杂度O(1)
* @param input
* @return
*/
public static int getAlienNumber(int[] input) {
int alienNumber = 0;
for(int i=0; i<input.length; i++)
alienNumber ^= input[i];
return alienNumber;
}
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。