标签:necessary 问题 creating therefore sub sar http blank htm
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]
标签:necessary 问题 creating therefore sub sar http blank htm
原文地址:http://www.cnblogs.com/hellowooorld/p/7084850.html