南和网站seo,wordpress 后台子菜单,企业建设高端网站的目的,建设网站设计专业服务代码随想录算法训练营第五十二天| 300.最长递增子序列、674.最长连续递增序列、718.最长重复子数组
题目
300.最长递增子序列
给你一个整数数组 nums #xff0c;找到其中最长严格递增子序列的长度。
子序列 是由数组派生而来的序列#xff0c;删除#xff08;或不删除找到其中最长严格递增子序列的长度。
子序列 是由数组派生而来的序列删除或不删除数组中的元素而不改变其余元素的顺序。例如[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。
class Solution:def lengthOfLIS(self, nums: List[int]) - int:if not nums:return 0dp [1] * len(nums)for i in range(1, len(nums)):for j in range(i):if nums[i] nums[j]:dp[i] max(dp[i], dp[j] 1)return max(dp)题目
674.最长连续递增序列
给定一个未经排序的整数数组找到最长且 连续递增的子序列并返回该序列的长度。
连续递增的子序列 可以由两个下标 l 和 rl r确定如果对于每个 l i r都有 nums[i] nums[i 1] 那么子序列 [nums[l], nums[l 1], ..., nums[r - 1], nums[r]] 就是连续递增子序列。
class Solution:def findLengthOfLCIS(self, nums: List[int]) - int:if not nums:return 0dp [1] * len(nums)for i in range(1, len(nums)):if nums[i] nums[i - 1]:dp[i] dp[i - 1] 1return max(dp)题目
718.最长重复子数组
给两个整数数组 nums1 和 nums2 返回 两个数组中 公共的 、长度最长的子数组的长度 。
class Solution:def findLength(self, nums1: List[int], nums2: List[int]) - int:if not nums1 and not nums2:return 0res float(-inf)nums1_len, nums2_len len(nums1), len(nums2)# nums1_len行# nums2_len列# 容易顺序弄混dp [[0] * (nums2_len 1) for _ in range(nums1_len 1)]for i in range(1, nums1_len 1):for j in range(1, nums2_len 1):if nums1[i - 1] nums2[j - 1]:dp[i][j] dp[i - 1][j - 1] 1res max(res, dp[i][j])return res