本文共 961 字,大约阅读时间需要 3 分钟。
Given an unsorted array of integers, find the length of longest increasing subsequence.
For example,
Given[10, 9, 2, 5, 3, 7, 101, 18],
The longest increasing subsequence is [2, 3, 7, 101]
, therefore the length is 4
. Note that there may be more than one LIS combination, it is only necessary for you to return the length. Your algorithm should run in O(n2) complexity.
Follow up: Could you improve it to O(n log n) time complexity?
dp[i] means the length of an increase sequence that includes nums[i], and it must equals a previous dp value add one which reaches the max.
class Solution(object): def lengthOfLIS(self, nums): """ :type nums: List[int] :rtype: int """ dp = [1]*len(nums) for i in xrange(len(nums)): for y in xrange(i): if nums[i] >nums[j]: dp[i] = max(dp[i],dp[j]+1) return max(dp) if dp else 0
转载地址:http://ledja.baihongyu.com/