题目链接: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;
}
本文介绍了两种有效的算法来找出数组中只出现一次的元素。首先通过排序和比较相邻元素实现,接着介绍了一种更高效的异或运算方法。异或运算利用X^X=0和0^X=X的特性,对数组中所有元素进行异或操作,最终得到单次出现的元素。
170

被折叠的 条评论
为什么被折叠?



