8.2笔记

477. 汉明距离总和

class Solution:
    def totalHammingDistance(self, nums: List[int]) -> int:
        sum1 = 0
        for i in range(31):
            c1,c2 = 0,0
            for n in nums:
                if (n>>i)&1:
                    c1+=1
                else:
                    c2+=1
            sum1+= c1*c2
        return sum1

481. 神奇字符串

class Solution:
    def magicalString(self, n: int) -> int:
        if n == 0:
            return 0
        if n <= 3:
            return 1
        s = '122'
        a = '1'
        i = 2
        res = 3
        while res <= n:
            s +=  a*int(s[i])
            res += int(s[i])
            a = '2' if a == '1' else '1'
            i += 1
        return s[:n].count("1")

491. 递增子序列

class Solution:
    def findSubsequences(self, nums: List[int]) -> List[List[int]]:
        def backtrack(t):
            if t == len(nums):
                return 
            tep.append(0)
            s = {}
            for i in range(t+1,len(nums)):
                if nums[i] >= nums[t] and nums[i] not in s:
                    s[nums[i]] = 1
                    tep[-1] = nums[i]
                    res.append(tep[:])
                    backtrack(i)
            tep.pop()

        res = []
        s = {}
        tep = [0]
        for i in range(len(nums)):
            if nums[i] not in s:
                s[nums[i]] = 1
                tep[0] = nums[i]
                backtrack(i)
        return res

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值