[leetcode-300-Longest Increasing Subsequence]
Posted hellowOOOrld
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[leetcode-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?
Credits:
Special thanks to @pbrother for adding this problem and creating all test cases.
思路:
经典dp问题,定义dp数组,dp[i]代表0到i区间的最长递增子序列。状态转移方程为
dp[i] = max(dp[i], dp[j] + 1)。
int lengthOfLIS(vector<int>& nums) { int n = nums.size(),ret = 0; if (n == 0) return 0; vector<int>dp(n, 1); for (int i = 0; i < n;i++) { for (int j = 0; j < i; j++) { if(nums[i]>nums[j])dp[i] = max(dp[i], dp[j] + 1); } ret = max(ret, dp[i]); } return ret; }
参考:
http://www.cnblogs.com/yrbbest/p/5047816.html
以上是关于[leetcode-300-Longest Increasing Subsequence]的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 300. Longest Increasing Subsequence
LeetCode 300. Longest Increasing Subsequence
LeetCode 300. Longest Increasing Subsequence
leetcode300.Longest Increasing Subsequence