leetcode 300. Longest Increasing Subsequence
Posted qinduanyinghua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 300. Longest Increasing Subsequence相关的知识,希望对你有一定的参考价值。
Given an unsorted array of integers, find the length of longest increasing subsequence.
Example:
Input:[10,9,2,5,3,7,101,18]
Output: 4 Explanation: The longest increasing subsequence is[2,3,7,101]
, therefore the length is4
.
Note:
- 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?
分析:求解数组最长递增子序列(严格递增).
思路一:动态规划,时间复杂度:O(n2)。dp[i]表示以下标为i的数字为结尾的最长递增子序列长度。
1 class Solution 2 public: 3 int lengthOfLIS(vector<int>& nums) 4 int len = nums.size(); 5 vector<int> dp(len, 0); 6 int maxn = 0; 7 for (int i = 0; i < len; i++) 8 dp[i] = 1; 9 for (int j = 0; j < i; j++) 10 if (nums[i] > nums[j]) 11 dp[i] = max(dp[i], dp[j] + 1); 12 13 maxn = max(maxn, dp[i]); 14 15 return maxn; 16 17 ;
思路二:动归+二分
以上是关于leetcode 300. Longest Increasing Subsequence的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 300. Longest Increasing Subsequence
LeetCode 300. Longest Increasing Subsequence
LeetCode 300. Longest Increasing Subsequence
leetcode300.Longest Increasing Subsequence