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
动态规划