/**
* 一个数组,有一个数出现3次,其余出现2次,求出现3次的数,要求时间复杂度<nlogn,空间复杂度O(1)
* @author Administrator
*
*/
public class FindSpecialNumInArray {
/**
* 一个数与自身异或结果为0;0与任何数异或结果不变;由此可知,出现两次的数异或后结果为0,出现3次的数,
* 异或后结果为该数,因此将数组所有的数进行异或,最后剩下的数就是出现3次的数,时间复杂度为o(n),
* 空间复杂度为O(1);此方法可以再出现偶数个数与奇数个数数组中找到出现奇数个的数;
* @param arr[]
* @return
*/
public int findSpecialNum(int[] arr){
int temp = 0;
for(int i=0;i<arr.length;i++){
temp ^= arr[i];
}
return temp;
}
}
/**
* 一个数组,有一个数出现3次,其余出现2次,求出现3次的数,要求时间复杂度<