[leetcode]只出现一次的数字
个人解法
class Solution {
public int singleNumber(int[] nums) {
Arrays.sort(nums);//先排序
if(nums.length==1)return nums[0];
for(int i=0;i<nums.length-1;){
if(nums[i]!=nums[i+1])return nums[i];
if(nums[i]==nums[i+1])i+=2;
if(nums.length-i==1)return nums[i];
}
return 0;
}
}
大佬解法
把所有的数字异或,相同的数字异或后为0,最后剩下单独的数字
class Solution {
public int singleNumber(int[] nums) {
int ret=0;
for(int i=0;i<nums.length;i++){
ret^=nums[i];
}
return ret;
}
}