zoukankan      html  css  js  c++  java
  • LeetCode 260.只出现一次的数字 III

    给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。

    示例 :
    输入: [1,2,1,3,2,5]
    输出: [3,5]

    注意:
    1、结果输出的顺序并不重要,对于上面的例子, [5, 3] 也是正确答案。
    2、你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?

    class Solution:
        def singleNumber(self, nums: List[int]) -> List[int]:
            """
            1、计算a_xor_b
            2、取出a_xor_b中任意一位1,用flag_bit标记
            3、对flag_bit位为0和1的值分别在a_xor_b上进行异或运算
            4、不妨设 b在flag_bit位置的值为1,
                则a = a_xor_b ^ b ^(……),b = a_xor_b ^ a ^(……),括号内的异或运算为0
            """
            a_xor_b = 0
            for num in nums:
                a_xor_b = a_xor_b^num
            flag = 1
            while flag & a_xor_b ==0:
                flag = flag<<1
            a = b = a_xor_b
            for num in nums:
                if num & flag == 0 :
                    a = a^num
                else:
                    b = b^num
            return [a,b]
    
    
  • 相关阅读:
    协议与接口相关
    jmeter 使用(1)
    jmeter 压力测试
    shell脚本的规则
    charles的原理及使用
    Linux环境部署和项目构建
    面向对象
    python 基础练习题
    jmeter 使用(2)
    Ext.apply
  • 原文地址:https://www.cnblogs.com/sandy-t/p/13198746.html
Copyright © 2011-2022 走看看