您的位置:首页 > 产品设计 > UI/UE

LeetCode Longest Increasing Subsequence (LIS O(nlogn))

2015-11-16 22:02 579 查看
题意:

  给一个数组,求严格递增的最长递增子序列的长度。

思路:

  开销是一个额外的O(n)的数组。lower_bound(begin,end,val)的功能是:返回第一个大于等于val的地址。

class Solution {
public:
int lengthOfLIS(vector<int>& nums) {
if(nums.empty())    return 0;
int *p=new int[nums.size()];
p[0]=nums[0];
int len=0;
for(int i=1; i<nums.size(); i++)
{
if(nums[i]>p[len])
p[++len]=nums[i];
else
*lower_bound(p,p+len+1,nums[i])=nums[i];
}
delete []p;
return ++len;
}
};


AC代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: