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 is 4.
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.
动态规划:F[i]=max{F[j]+1}(1<=j< i,A[j]< A[i])
class Solution {
public:int lengthOfLIS(vector<int>& nums) {
int n=nums.size();
if(n==0)
return 0;
if(n==1)
return 1;
vector<int> dp(n,1);
int length=1;
for(int i=1;i<n;i++)
{
for(int j=0;j<i;j++)
{
if(nums[j]<nums[i])
dp[i]=max(dp[i],dp[j]+1);
}
}
for(int i=0;i<n;i++)
{
length=max(length,dp[i]);
}
return length;
}
};