把返回最长递增子序列的长度和最长递增子序列的函数分成两个函数写
时间: 2023-12-06 12:03:37 浏览: 75
好的,我可以帮你写这两个函数。下面是返回最长递增子序列的长度的函数:
```python
def get_lis_length(nums):
if not nums:
return 0
n = len(nums)
dp = [1] * n
for i in range(1, n):
for j in range(i):
if nums[i] > nums[j]:
dp[i] = max(dp[i], dp[j] + 1)
return max(dp)
```
而下面是返回最长递增子序列的函数:
```python
def get_lis(nums):
if not nums:
return []
n = len(nums)
dp = [[num] for num in nums]
for i in range(1, n):
for j in range(i):
if nums[i] > nums[j] and len(dp[i]) < len(dp[j]) + 1:
dp[i] = dp[j] + [nums[i]]
return max(dp, key=len)
```
这两个函数都是基于动态规划的思想实现的。`get_lis_length` 函数返回的是最长递增子序列的长度,而 `get_lis` 函数返回的是实际的最长递增子序列。
阅读全文