标签:long span sequence should sar not lis 方法 nbsp
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的方法,每一个dp[i]代表从nums[0]到这个元素nums[i]的最长的inreasing subsequence的长度。O(N^2)的解法:
1 class Solution(object): 2 def lengthOfLIS(self, nums): 3 """ 4 :type nums: List[int] 5 :rtype: int 6 """ 7 if not nums: 8 return 0 9 n = len(nums) 10 dp = [1] * n 11 12 for i in range(0, n): 13 for j in range(i+1, n): 14 if nums[j] > nums[i]: 15 dp[j] = max(dp[i] + 1, dp[j]) 16 17 return max(dp)
300 Longest Increasing Subsequence
标签:long span sequence should sar not lis 方法 nbsp
原文地址:http://www.cnblogs.com/lettuan/p/6189039.html