首页 > 代码库 > 300 Longest Increasing Subsequence
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。