当前位置:实例文章 » 其他实例» [文章]代码随想录第52天|300.最长递增子序列,674. 最长连续递增序列,718. 最长重复子数组

代码随想录第52天|300.最长递增子序列,674. 最长连续递增序列,718. 最长重复子数组

发布人:shili8 发布时间:2025-01-08 01:51 阅读次数:0

**代码随想录第52天 |300. 最长递增子序列**

**674. 最长连续递增序列**

**718. 最长重复子数组**

### 最长递增子序列 (Longest Increasing Subsequence, LIS)

最长递增子序列是指一个序列中,所有元素都是递增的,并且长度最长的子序列。

####问题描述给定一个整数数组 `nums`,请找到最长递增子序列的长度。

#### 示例* 输入:`nums = [10,9,2,5,3,7,101,18]`
输出:`4`

### 最长连续递增序列 (Longest Continuous Increasing Sequence)

最长连续递增序列是指一个序列中,所有元素都是递增的,并且长度最长的连续子序列。

####问题描述给定一个整数数组 `nums`,请找到最长连续递增序列的长度。

#### 示例* 输入:`nums = [1,17,23,2,19,24,8,21,4,10,12,11,13,14,3]`
输出:`9`

### 最长重复子数组 (Longest Repeating Subarray)

最长重复子数组是指一个序列中,所有元素都是相同的,并且长度最长的子数组。

####问题描述给定两个整数数组 `nums1` 和 `nums2`,请找到最长重复子数组的长度。

#### 示例* 输入:`nums1 = [1,2,3,4]`, `nums2 = [2,3,4,5]`
输出:`3`

### 解决方案#### 最长递增子序列 (LIS)

我们可以使用动态规划来解决这个问题。我们首先定义一个数组 `dp`,其中 `dp[i]` 表示以 `nums[i]` 为结尾的最长递增子序列的长度。

def lengthOfLIS(nums):
 if not nums:
 return0 dp = [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)


#### 最长连续递增序列 (LCIS)

我们可以使用滑动窗口来解决这个问题。我们首先定义一个变量 `max_len`,用于存储最长连续递增序列的长度。

def longestContinuousIncreasingSequence(nums):
 if not nums:
 return0 max_len =1 current_len =1 for i in range(1, len(nums)):
 if nums[i] > nums[i -1]:
 current_len +=1 else:
 max_len = max(max_len, current_len)
 current_len =1 return max(max_len, current_len)


#### 最长重复子数组 (LRS)

我们可以使用动态规划来解决这个问题。我们首先定义两个数组 `dp1` 和 `dp2`,其中 `dp1[i]` 和 `dp2[j]` 表示以 `nums1[i]` 和 `nums2[j]` 为结尾的最长重复子数组的长度。

def findLength(nums1, nums2):
 if not nums1 or not nums2:
 return0 dp1 = [1] * len(nums1)
 dp2 = [1] * len(nums2)

 for i in range(1, len(nums1)):
 for j in range(1, len(nums2)):
 if nums1[i] == nums2[j]:
 dp1[i] = max(dp1[i], dp1[i -1] +1)
 dp2[j] = max(dp2[j], dp2[j -1] +1)

 return max(max(dp1), max(dp2))


### 总结在本文中,我们分别讨论了最长递增子序列、最长连续递增序列和最长重复子数组三个问题。我们使用动态规划和滑动窗口来解决这些问题,并提供了示例代码。

最长递增子序列是指一个序列中,所有元素都是递增的,并且长度最长的子序列。我们可以使用动态规划来解决这个问题。

最长连续递增序列是指一个序列中,所有元素都是递增的,并且长度最长的连续子序列。我们可以使用滑动窗口来解决这个问题。

最长重复子数组是指一个序列中,所有元素都是相同的,并且长度最长的子数组。我们可以使用动态规划来解决这个问题。

这些问题在实际应用中非常重要,因为它们可以帮助我们分析和处理数据,找出模式和趋势。

### 参考* [最长递增子序列]( />* [最长连续递增序列]( />* [最长重复子数组](

其他信息

其他资源

Top