# # 重点在于连续!| LeetCode:674. # # 给定一个未经排序的整数数组,找到最长且连续递增的子序列,并返回该序列的长度。 # # 连续递增的子序列可以由两个下标l和r(l < r)确定,如果对于每个 # l <= i < r,都有nums[i] < nums[i + 1] ,那么子序列[nums[l], nums[l + 1], ..., nums[r - 1], nums[r]就是连续递增子序列。 # # # # 示例1: # 输入:nums = [1, 3, 5, 4, 7] # 输出:3 # 解释:最长连续递增序列是[1, 3, 5], 长度为3。 # 尽管[1, 3, 5, 7] # 也是升序的子序列, 但它不是连续的,因为5和7在原数组里被4隔开。 # # 示例2: # 输入:nums = [2, 2, 2, 2, 2] # 输出:1 # 解释:最长连续递增序列是[2], 长度为1。 # 动归5步曲 #1.dp[i] 前i个数组最长递增子序列 #2. if nums[i] > nums[i-1] dp[i] = dp[i-1]+1 # else dp[i] = dp[i-1] #3.初始化dp dp[0] = 1 # 4.确定遍历顺序 # 5.打印dp def get_num(nums): dp = [1] * (len(nums)) res = 1 for i in range(1, len(nums)): if nums[i] > nums[i - 1]: dp[i] = max(dp[i - 1] + 1, dp[i]) res = dp[i] if dp[i] > res else res print(dp) return res nums = [1, 3, 5, 4, 7] print(get_num(nums))
31.动态规划之子序列问题-最长连续递增序列.py
于 2023-12-13 20:54:48 首次发布