您当前的位置: 首页 >  宝哥大数据

136. 只出现一次的数字

宝哥大数据 发布时间:2019-10-27 09:11:13 ,浏览量:3

一、136. 只出现一次的数字

题目描述

1、哈希表

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        dicts = {}
        for i in nums:
            if i in dicts:
                dicts[i] -= 1
            else:
                dicts[i] = 1
        for i in dicts.keys():
            if dicts[i] == 1:
                return i
        

2、数学: 2∗(a+b+c)−(a+a+b+b+c)=c

class Solution(object):
    def singleNumber(self, nums):
        return 2 * sum(set(nums)) - sum(nums)

3、位操作

class Solution(object):
    def singleNumber(self, nums):
        a = 0
        for i in nums:
            a ^= i
        return a

二、389. 找不同

2.1、位运算

class Solution:
    def findTheDifference(self, s: str, t: str) -> str:
        ordc = 0
        for c in s:
            ordc ^= ord(c)
        for c in t:
            ordc ^= ord(c)
        return chr(ordc)

2.2、哈希表
2.3、ASCII 和之差
每一个字符都对应一个 ASCII 数字,那么那个不同的数字的 ASCII 码就等于 t 的所有字符码之和 - s 的
ord 函数将单个字符转换为 ASCII 码, chr相反

return chr(sum(map(ord, t)) - sum(map(ord, s)))

三、461. 汉明距离

class Solution:
    def hammingDistance(self, x: int, y: int) -> int:
        # 异或
        c = x ^ y
        n = 0
        ret = 0
        while n >= 1
            n += 1
        return ret

四、476. 数字的补数

class Solution:
    def findComplement(self, num: int) -> int:
        # 原数 + 补数 = 位最大数
        # 原数 ^ 补数 = 位最大数
        tmp = num
        MASK = 1
        while tmp != 0:
            tmp >>= 1
            MASK             
关注
打赏
查看更多评论