题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
原理1:两个数转为二进制,然后从高位开始比较,如果相同则为0,不相同则为1,这个想法好啊。除了一个不是重复的,其他都是两两重复。^后最终值就是多余的那个。
class Solution {
public int singleNumber(int[] nums) {
int result =0;
for(int i =0;i < nums.length;i++){
result = result ^ nums[i];
}
return result;
}
}
原理2:先将数组进行排序,比较偶数项和奇数项是否相等,如果不是,则返回
class Solution {
public int singleNumber(int[] nums) {
//排序
Arrays.sort(nums);
int n = nums.length;
for(int i = 0;i< n-1;i += 2){
if(nums[i] != nums[i+1]){
return nums[i];
}
}
//如果是末尾的数
return nums[n-1];
}
}