美文网首页
SINGLE NUMBER 落单的数

SINGLE NUMBER 落单的数

作者: adonisjph | 来源:发表于2016-01-15 16:14 被阅读112次

    给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。
    样例 给出 [1,2,2,1,3,4,3] 返回 4

    挑战 一次遍历,常数级的额外空间复杂度

    最简单的办法就是对元素进行遍历查重,没有重复的就返回,但是这样的效率很低。

    此处可以利用位运算来进行处理,当两个相同的数进行异或时,值为0,不同的数异或时,值为1.利用此特点,可以将数组内所有的数字进行异或处理,最后得出的结果便是落单的数。
    ab=ba
    0^a=a

    class Solution: 
    """ @param A : an integer array 
        @return : a integer 
    """ 
    def singleNumber(self, A): 
          # write your code here 
            result = 0 
            for i in A: 
                  result = result ^ i 
            return results
    

    相关文章

      网友评论

          本文标题:SINGLE NUMBER 落单的数

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