[leetcode]只出现一次的数字

[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;
    }
}