给定一个未经排序的整数数组,寻找最长递增子序列的长度。
例如,
给定 [10, 9, 2, 5, 3, 7, 101, 18],
最长递增子序列是:[2, 3, 7, 101],因而长度是4。注意可能存在不止一个LIS组合,只需要返回长度即可。
1234567891011121314151617
class Solution(object): def lengthOfLIS(self, nums): """ :type nums: List[int] :rtype: int """ # 5 star, no idea # 动态规划,dp[i]代表以i结尾的最长的LIS,状态转移方程 dp[i] = max(dp[i], dp[j]+1), j是0到i之间的范围 length = len(nums) if not nums: return 0 dp = [1] * length for i in range(length): for j in range(i): if nums[i] > nums[j]: dp[i] = max(dp[i], dp[j] + 1) return max(dp)