题解 | #最长上升子序列(一)#
最长上升子序列(一)
https://www.nowcoder.com/practice/5164f38b67f846fb8699e9352695cd2f
class Solution: def LIS(self, arr: List[int]) -> int: n = len(arr) if n == 0: return 0 dp = [1] * n # 初始化dp数组,每个元素至少可以单独成为一个子序列 for i in range(1, n): for j in range(i): if arr[i] > arr[j]: dp[i] = max(dp[i], dp[j] + 1) # 更新dp[i]为以arr[i]结尾的最长上升子序列长度 return max(dp) # 返回dp数组中的最大值,即最长上升子序列的长度