Longest Increasing Subsequence
2015-12-15 17:19
337 查看
Longest Increasing Subsequence
Total Accepted: 9797 Total Submissions: 30801 Difficulty: Medium
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?
1.o(n*n)
class Solution { public: int lengthOfLIS(vector<int>& nums) { int n = nums.size(); int res = n==0 ? 0 : 1; vector<int> help(n,1); for(int i=1;i<n;i++){ for(int j=0;j<i;j++){ if(nums[j] < nums[i]){ help[i] = max(help[i],help[j]+1); res = max(res,help[i]); } } } return res; } };
2.o(n*lgn)
class Solution { public: int lengthOfLIS(vector<int>& nums) { int n = nums.size(); vector<int> help; for(int i=0;i<n;i++){ auto iter = lower_bound(help.begin(),help.end(),nums[i]); if(iter == help.end()){ help.push_back(nums[i]); }else{ *iter=nums[i]; } } return help.size(); } };
相关文章推荐
- UICollectionView的简单使用(二)— 瀑布流(石工布局)
- UI之delegate
- android 传参 StringRequest 线程 实现页面页面停留
- [Leetcode]N-Queens
- hdu1005 Number Sequence(寻找循环节)
- [LeetCode]Unique Binary Search Trees II
- Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: bad request (400)
- 第九章 Editing UITableView
- 在DLL中使用duilib,并把ZIP皮肤编译进DLL中
- UITableViewCell中去除没有内容的cell的分割线
- Ant_的最完整build.xml解释
- Swing UI线程安全操作
- UITextFiled-弹出键盘的类型
- iOS 关于设置UIView的autoresizingMask没有作用的问题
- Stack Overflow:iOS how to use UIAlertView
- Android6.0的phone应用源码分析(3)——phone 拨号UI分析
- android UI界面 weight 用法
- 重定向和转发有什么区别!getRequestDispatcher,sendRedirect为代表(1)
- UIButtun的一些设置方法
- iOS程序-UIScrollView的基本使用