223. 矩形面积

class Solution:
    def computeArea(self, ax1: int, ay1: int, ax2: int, ay2: int, bx1: int, by1: int, bx2: int, by2: int) -> int:
        area = (ax1-ax2)*(ay1-ay2) + (bx2-bx1)*(by2-by1) 
        w = min(ax2, bx2) - max(ax1, bx1)
        h = min(ay2, by2) - max(ay1, by1)
        over = max(w, 0) * max(h, 0)
        
        return area - over

233. 数字 1 的个数

方法一:n = 824883294 时超时

class Solution:
    def countDigitOne(self, n: int) -> int:
        res = 0
        for i in range(1,n+1):
            res += str(i).count('1')
        
        return res

方法二:

class Solution:
    def countDigitOne(self, n: int) -> int:
        # mulk 表示 10^k
        mulk, ans = 1, 0

        while n >= mulk:
            a, b = divmod(n, mulk*10)
            ans += a*mulk + min(max(b-mulk+1, 0), mulk)
            
            mulk *= 10
        return ans

动态规划