136.只出现一次得数字

作者: 第四单元 | 来源:发表于2018-03-30 17:26 被阅读13次

题目

给定一个整数数组,除了某个元素外其余元素均出现两次。请找出这个只出现一次的元素。

备注:

你的算法应该是一个线性时间复杂度。 你可以不用额外空间来实现它吗?

思路

思路一:最容易想的的方法可能是先排序,再遍历就能找到了。
思路二:但这里要求线性时间复杂度。想到了异或操作。对于一个数A,A^A = 0;
对于一个数B,B^0=B。所以,这只要将所有数字依次异或最后得到的值就是答案啦。

代码

class Solution {
    public int singleNumber(int[] nums) {
        int ans = 0;
        int len = nums.length;
        for(int i = 0; i < len; i++) {
            ans ^= nums[i];
        }
        return ans;
    }
}

相关文章

网友评论

    本文标题:136.只出现一次得数字

    本文链接:https://www.haomeiwen.com/subject/sjiicftx.html