zoukankan      html  css  js  c++  java
  • Python编程题22--只出现一次的数字

    题目

    给定一个非空整数列表,除了某个元素只出现一次以外,其余每个元素均出现两次。请找出那个只出现了一次的元素。

    注意:除了定义的返回结果变量外,不允许使用额外空间,并且不允许使用编程语言的内置函数。

    例如:

    给定一个列表:[4, 1, 2, 1, 2],返回结果:4

    给定一个列表:[2, 2, 1],返回结果:1

    实现思路

    • 通过 位运算 来实现,设置一个返回值res,默认值为0
    • 遍历列表元素,每次均与res进行异或运算
    • 列表中只有1个元素出现一次,其余元素均出现两次,相同元素异或的结果为0,所以最终的结果res就是这个只出现一次的元素

    在二进制的异或运算中,例如a=12,b=7,那么a异或b的结果c计算如下:

    a = 0 0 0 0 1 1 0 0
    b = 0 0 0 0 0 1 1 1
    c = 0 0 0 0 1 0 1 1 (相同位的值为0,不同为1)

    所以我们可以看出:0异或任一个数a,其结果为 a;任一数a异或自己,也就是 a异或a,其结果为 0

    代码实现

    def singleNumber(nums):
        res = 0
        for num in nums: 
            res = res ^ num
        return res
    
    作者:wintest
    本文版权归作者和博客园共有,欢迎转载,但必须在文章页面明显位置给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    第一周例行报告psp
    作业要求 2018091-2 博客作业
    20181011-1第一周例行报告
    20180912-2第一周博客作业
    Elasticsearch
    centos7 安装Hadoop-2.6.0-cdh5.16.1.tar.gz
    centos7安装hadoop2.7.7
    centos7安装jdk8
    专业知识4
    专业知识3
  • 原文地址:https://www.cnblogs.com/wintest/p/15473373.html
Copyright © 2011-2022 走看看