设计网站高级感,旺道seo推广效果怎么样,大鹏附近网站建设,网站建设实训报告总结给定一个未经排序的整数数组#xff0c;找到最长且 连续递增的子序列#xff0c;并返回该序列的长度。
连续递增的子序列 可以由两个下标 l 和 r#xff08;l r#xff09;确定#xff0c;如果对于每个 l i r#xff0c;都有 nums[i] nums[i 1] 找到最长且 连续递增的子序列并返回该序列的长度。
连续递增的子序列 可以由两个下标 l 和 rl 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。提示
1 nums.length 10^4
-109 nums[i] 10^9 解题思路【动态规划】 dp[i]表示num[i]结尾的连续递增子序列长度dp[i] dp[i - 1] 1当 nums[i]nums[i - 1] 时 此情况下连续递增子序列长度为 dp[i - 1]1 当 nums[i]nums[i - 1] 时此情况上升子序列不成立跳过。初始化dp[i] 1 题目差异参考博文[leetcode]300_最长递增子序列-CSDN博客 class Solution:def longest_continous_substring_dp(self, nums):length len(nums)dp [1] * lengthfor i in range(1, length):if nums[i] nums[i - 1]:dp[i] dp[i - 1] 1return max(dp)
if __name__ __main__:num eval(input())solution Solution()print(solution.longest_continous_substring_dp(num)) 其他思路【贪心】 局部最优num[i] nums[i - 1]连续序列长度 count 1其他情况 count 1 全局最优最大的连续长度count def longest_continous_substring_greedy(self, nums):length len(nums)res 1count 1for i in range(1, length):if nums[i] nums[i - 1]:count 1else:count 1res max(res, count)return res 仅作为代码记录方便自学自查自纠