SINGLE NUMBER 落单的数

给出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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,740评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,841评论 18 139
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,766评论 0 33
  • 性能优化工具知识梳理(1) - TraceView[https://www.jianshu.com/p/37c26...
    泽毛阅读 3,002评论 0 12
  • 文:李彬 摄影:贺子芸 丁酉年庚戌月甲戌日(2017.10.14日),空气中弥漫着润泽湿润的气息,上午碗泡法的课程...
    习茶小记阅读 356评论 0 1