最長遞增子串行 nlogn

2021-07-30 07:48:30 字數 1004 閱讀 1527

#include

using

namespace

std;

//2 1 5 3 6 4 8 9 7 //

上課講了這個,回去之後就用**實現以下

// 這個演算法的目標是

找到乙個最長的遞增子串行

//o(nlogn)

的複雜度 //

思路是遇到小的就留下,更新的路程中

插入到這個序列當中 //

一開始看那個麻瓜

blog

理解錯了 //

然後看這個理解了動態規劃裡的演算法,沒看懂意思

// //

再回到麻瓜

blog

之後了解意思了

準備coding一下

//二分查最大的比它小的位置。

intbinary_find(

inttar,

intl,

intr,

int* a)

int* getlist(

int*a) }

for(

inti=

0;i1

;i++)

//len=5;

//cout

int*out=

newint

[len];

//len--;

out[len]=a[temp[len]];

cout

<<

"thresh"

for(int

i=temp[len];i>-

1;i--) }

//2 1 5 3 6 4 8 9 7

return

out;

} intmain();

int*b=getlist

(a);

for(inti=0

;i<

5;i++)

cout

<" ";

cout

<<

endl;

}

最長遞增子串行nlogn的做法

費了好大勁寫完的 用線段樹維護的 nlogn的做法 再看了一下 大神們寫的 nlogn 額差的好遠 我寫的又多又慢 大神們寫的又少又快 時間 空間 量 哪個都趕不上大佬們的 這是我寫的 include include include include include include using nam...

dp最長遞增子串行的nlogn演算法實現

n2的演算法很簡單,這裡是利用另外乙個陣列d,d i 存的是長度為i的最末尾元素。因為d i 是有序的,可以用二分查詢優化,複雜度降低為nlogn,如下,注意二分查詢的邊界 include include include using namespace std const int n 41000 i...

最長遞增子串行

這是微軟實習生筆試遇到的,題意 求乙個陣列中最長遞增子串行的長度。要求選擇該題最好演算法的時間複雜度和空間複雜度。答案 時間複雜度o nlgn 空間複雜度o n 這題明顯用動態規劃來解。假設在目標陣列array 的前i個元素中,以array i 元素為最大元素的遞增子串行的長度是lis i 那麼 遞...