136. Single Number

一、题目

  1、审题

  2、分析

    给出一个非空的只有一个元素出现一次其他元素均出现两次的整形数组,求出出现一次的该元素。 (不使用额外的空间,而且时间复杂度为线性)

 

二、解答

  1、思路: 

    采用异或(^) 运算符。

    1 ^ 1 = 0 ^ 0 = 0;1 ^ 0 = 1;

    故,a ^  b ^ a = b

    // ^ : 异或, 1^1 = 0, 0^1 = 1 
    public int singleNumber(int[] nums) {
     
        for (int i = 1; i < nums.length; i++) {
            nums[0] ^= nums[i];
        }
        
        return nums[0];
    }
    

 

posted @ 2018-10-10 12:03  skillking2  阅读(75)  评论(0编辑  收藏  举报