#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 那麼 遞...