题目链接:Single Number
思路:将数组排序,然后进行两两比较即可
代码如下:
class Solution {
public int singleNumber(int[] nums) {
int len = nums.length;
if(len==0)
return 0;
if(len==1)
return nums[0];
int tmp;
int i, j;
for(i=1;i<len;i++){
tmp = nums[i];
for(j=i;j>0&&tmp<nums[j-1];j--)
nums[j] = nums[j-1];
nums[j] = tmp;
}
for(i=0;i<len-1;i++){
if(nums[i]!=nums[i+1])
return nums[i];
i++;
}
return nums[len-1];
}
}
看到了一个非常巧妙的方法,利用异或运算。
X^X=0,0^X=X
所以将数组中的所有数字进行异或运算,最后结果即为所求
代码如下:
public int singleNumber(int[] nums) {
int len = nums.length;
int re = 0;
for(int i=0;i<len;i++){
re ^= nums[i];
}
return re;
}