leetcode-4.26[70. 爬楼梯、69. x 的平方根、67. 二进制求和](python解法)

题目1

在这里插入图片描述

题解1

class Solution:
    """
        1. 子问题:  DP[i] 到第i元素最多的爬取方式
        2. 子方法之间的关系:
            第 i 阶可以由以下两种方法得到:
            在第 (i-1)阶后向上爬1阶。
            在第 (i-2)阶后向上爬2阶
            DP[i] = DP[i-1] + DP[i-2]
        3. 起始条件: DP[0] = 0
                 DP[1] = 1
                 DP[2] = 2
        4. 画表:
                i   0   1  2  3   4   5
                num     1  2  3   4   5
                DP  0   1  2  3   5   8
    """
    def climbStairs(self, n: int) -> int:
        if n < 3:
            return n
            
        DP = [None] * (n+1)
        DP[1] = 1
        DP[2] = 2
        for i in range(3, n+1):
            DP[i] = DP[i-1] + DP[i-2]
        return DP[-1]

题目2

在这里插入图片描述

题解2

class Solution:
    def mySqrt(self, x: int) -> int:
        if x < 2:
            return x
        for i in range(1,x+1):
            if x//i < i:
                return i -1

题目3

在这里插入图片描述

题解3

class Solution:
    def addBinary(self, a: str, b: str) -> str:
        """
            1. 把 aa 和 bb 转换成整型数字 xx 和 yy,xx 保存结果,yy 保存进位。
            2. 当进位不为 0:y != 0:
            3. 计算当前 xx 和 yy 的无进位相加结果:answer = x^y。
            4. 计算当前 xx 和 yy 的进位:carry = (x & y) << 1。
            5. 完成本次循环,更新 x = answer,y = carry。
            6. 返回 xx 的二进制形式。
        """
        # 先求出不进位二进制数,再把进位值左移
        x, y = int(a, 2), int(b, 2)
        while y:
            x, y = x ^ y, (x & y) << 1
        return bin(x)[2:]
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值