# 元素不连续!| LeetCode:300. # 给你一个整数数组nums ,找到其中最长严格递增子序列的长度。 # # 子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。 # 例如,[3, 6, 2, 7]是数组[0, 3, 1, 6, 2, 2, 7]的子序列。 # # # 示例1: # 输入:nums = [10, 9, 2, 5, 3, 7, 101, 18] # 输出:4 # 解释:最长递增子序列是[2, 3, 7, 101],因此长度为4 。 # # 示例2: # 输入:nums = [0, 1, 0, 3, 2, 3] # 输出:4 # # 示例3: # 输入:nums = [7, 7, 7, 7, 7, 7, 7] # 输出:1 # 1.dp[i] 从j到i最长递增子序列 # 2.dp[i]= dp[j]+1 # 3.初始化:分别对dp[0][j] dp[i][0]进行初始化 # 4.确定遍历顺序 # 5.打印dp nums = [1, 0, 0, 1, 1, 2, 3, 3] nums0 = [5,6,7,1,2] nums1 = [10,9,2,5,3,7,101] nums2 = [5,6,7,1,2,8,3,9] def get_num(nums): dp = [1]*len(nums) dp[0] = 1 for i in range(1, len(nums)): for j in range(i): if nums[i] > nums[j]: dp[i] = max(dp[j] + 1, dp[i]) print(dp) return max(dp) print(get_num(nums1))
30.动态规划之子序列问题-最长递增子序列长度.py
于 2023-12-13 20:54:08 首次发布