300 Longest Increasing Subsequence
Posted lettuan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了300 Longest Increasing Subsequence相关的知识,希望对你有一定的参考价值。
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的主要内容,如果未能解决你的问题,请参考以下文章
300. Longest Increasing Subsequence
300. Longest Increasing Subsequence
300. Longest Increasing Subsequence
300. Longest Increasing Subsequence