279:完全平方数
class Solution:
_dp = [0]
def numSquares(self, n: int) -> int:
dp = self._dp
while len(dp) <= n:
dp += min(dp[-i*i] for i in range(1, int(len(dp)**0.5+1))) + 1,
return dp[n]
300:最长上升子序列
class Solution:
def lengthOfLIS(self, nums: List[int]) -> int:
c = [0]*len(nums)
size = 0
for num in nums:
i,j = 0,size
while i!=j:
m = (i+j) // 2
if c[m] < num:
i = m+1
else:
j = m
c[i] = num
size = max(size,i+1)
return size