package day02;
/**
*
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
* @author JZWen
*
*
* 思路: 什么是线性时间复杂度,不使用额外的空间,定义一个变量算不算?
*
* 线性复杂度: o(n)
*
* csdn上看到了一种特别好的算法,就是用异或处理。 其余元素之出现两次(偶数次) 找出那个出现一次(奇数次)
*
*
*/
public class Demo01 {
public static int fun(int nums[]) {
int num = 0;
for(int i=0; i<nums.length; i++) {
num ^= nums[i];
}
return num;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int nums[]= {4,1,2,1,2};
System.out.println(fun(nums));
}
}
注意这个应用的场景和方法,有很多限制条件的。
自己需要思考一下 ,如果重复的数据不是偶数个怎么办?