# 最长上升子序列问题:给定一个无序的整数数组,找到其中最长上升子序列的长度。 python
时间: 2024-03-03 11:48:03 浏览: 124
DP、二分-LeetCode300. 最长上升子序列(Python)
可以使用动态规划来解决这个问题。具体来说,我们定义dp[i]表示以第i个数字为结尾的最长上升子序列的长度。因此,我们需要遍历i之前的所有数字,找到比第i个数字小的数字j,然后更新dp[i]=max(dp[i], dp[j]+1)。最终的答案就是dp数组中的最大值。
下面是Python代码实现:
```python
def lengthOfLIS(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[j] < nums[i]:
dp[i] = max(dp[i], dp[j]+1)
return max(dp)
```
例如,对于数组[10,9,2,5,3,7,101,18],最长上升子序列是[2,5,7,101],其长度为4。
阅读全文