• LeetCode Longest Increasing Subsequence (LIS O(nlogn))


    题意:

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

    思路:

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

     1 class Solution {
     2 public:
     3     int lengthOfLIS(vector<int>& nums) {
     4         if(nums.empty())    return 0;
     5         int *p=new int[nums.size()];
     6         p[0]=nums[0];
     7         int len=0;
     8         for(int i=1; i<nums.size(); i++)    
     9         {
    10             if(nums[i]>p[len])
    11                 p[++len]=nums[i];
    12             else
    13                 *lower_bound(p,p+len+1,nums[i])=nums[i];
    14         }
    15         delete []p;
    16         return ++len;
    17     }
    18 };
    AC代码
  • 相关阅读:
    BBS
    BBS
    BBS
    BBS
    6.1
    Django
    Django
    tomcat——启动项目报错:java.lang.IllegalStateException
    Java——java.lang.NullPointerException
    Java——反射三种方式的效率对比
  • 原文地址:https://www.cnblogs.com/xcw0754/p/4970213.html
Copyright © 2020-2023  润新知