dp 解法,定义 dp 数组,转移方程为 dp[i] = max(dp[i], dp[j] + 1) j < i and arr[j] < arr[i] 因为每个数字算一位,初始值 dp = [1] * len(arr) 代码如下

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 给定数组的最长严格上升子序列的长度。
# @param arr int整型一维数组 给定的数组
# @return int整型
#
class Solution:
    def LIS(self , arr: List[int]) -> int:
        # write code here
        if not arr:
            return 0
        dp = [1 for _ in range(len(arr))]
        for i in range(len(arr)):
            for j in range(i):
                if arr[i] > arr[j]:
                    dp[i] = max(dp[i], dp[j] + 1)
        return max(dp)