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:]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章