经典指数          
原因
2578
浏览数
0
收藏数
 

对于一个数字序列,请设计一个复杂度为O(nlogn)的算法,返回该序列的最长上升子序列的长度,这里的子序列定义为这样一个序列U1,U2...,其中Ui < Ui+1,且A[Ui] < A[Ui+1]。 给定一个数字序列A及序列的长度n,请返回最长上升子序列的长度。 测试样例: [2,1,4,3,1,5,6],7 返回:4

     举报   纠错  
 
切换
1 个答案

classAscentSequence {

public:

    intfindLongest(vector A, intn) {

        // write code here

        vector B;

        intmax = 0;

        for(inti=0;i

            B.push_back(1);

            for(intj=i-1;j>=0;j--)

            {

                if(A[j]=B[i]?B[j]+1:B[i];

            }

            max = max>B[i]?max:B[i];

        }

        returnmax;

    }

};

程序借助辅助vector B,B中元素记录A中对应元素当前最大升序值,B[i]初始化为1,遍历A中元素来更新B[i]的值,max记录最大升序长度。

有不了解的地方请回复!!!

 
切换
撰写答案