LintCode Python 简单级题目 82.落单的数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LintCode Python 简单级题目 82.落单的数相关的知识,希望对你有一定的参考价值。

题目描述:

给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。

 

样例

给出 [1,2,2,1,3,4,3],返回 4

挑战 

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

题目分析:

给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。

利用  n^n = 0的特性,一个数异或本身结果为0

而   n^0 = n,所以 n^n-1^n = n-1,

所以保存异或结果,循环异或列表元素即可。

最后的结果就是落单的数 x

源码:

class Solution:
    """
    @param A : an integer array
    @return : a integer
    """
    def singleNumber(self, A):
        # write your code here
        EOR = 0
        for item in A:
            # 使用异或,相同的数异或为0,与先后顺序无关
            EOR = EOR^item
        return EOR

以上是关于LintCode Python 简单级题目 82.落单的数的主要内容,如果未能解决你的问题,请参考以下文章

LintCode Python 简单级题目 517.丑数

LintCode Python 简单级题目 373.奇偶分割数组

LintCode Python 简单级题目 423.有效的括号序列

LintCode Python 简单级题目 35.翻转链表

LintCode Python 简单级题目 39.恢复旋转排序数组

LintCode Python 简单级题目 60.搜索插入位置