Charles
Thinking low level, Coding high level
C++博客
首頁
新隨筆
聯(lián)系
聚合
管理
posts - 71, comments - 41, trackbacks - 0
尋找最長遞增子序列
注意,不一定連續(xù)遞增
template
<
class
?T
>
?
int
?FindLIS(T?
*
arr,?
int
?len,?T?
*&
result)
{
????
int
?
*
last?
=
?
new
?
int
[len]();
????
int
?
*
track?
=
?
new
?
int
[len]();
????
int
?left,?right,?mid;
????
int
?iCurrMaxLen?
=
?
0
;
????
if
?(len?
<
?
1
)
????
{
????????result?
=
?
0
;
????????
return
?
0
;
????}
????result?
=
?
0
;
????last[
0
]?
=
?
0
;
????
for
?(
int
?i?
=
?
1
;?i?
<
?len;?i
++
)?
????
{
????????
if
?(arr[last[iCurrMaxLen]]?
<
?arr[i])
????????
{
????????????track[i]?
=
?last[iCurrMaxLen];
????????????last[
++
iCurrMaxLen]?
=
?i;
????????????
continue
;
????????}
????????left?
=
?
0
;
????????right?
=
?iCurrMaxLen;
????????
while
?(left?
<
?right)
????????
{
????????????mid?
=
?(left?
+
?right)?
/
?
2
;
????????????arr[last[mid]]?
<
?arr[i]?
?
?left?
=
?mid?
+
?
1
?:?right?
=
?mid;
????????}
????????
if
?(
/**/
/*
left?<=?right?&&?
*/
arr[i]?
<
?arr[last[left]])?
????????
{
????????????
if
?(left?
>
?
0
)?
????????????????track[i]?
=
?last[left?
-
?
1
];
????????????last[left]?
=
?i;
????????}
????}
//
for
????
for
?(left?
=
?iCurrMaxLen,?right?
=
?last[iCurrMaxLen];?left?
>=
?
0
;?left
--
,?right?
=
?track[right])
????????last[left]?
=
?arr[right];
????
if
?(track)
????
{
????????delete?[]?track;
????????track?
=
?
0
;
????}
????result?
=
?last;
????last?
=
?
0
;
????
return
?iCurrMaxLen?
+
?
1
;
}
稍微解釋一下,last中存的是所有i長度子序列中l(wèi)ast[i]最小的那個值。而track中記錄它的前一個值。這樣可以沿著track找回去。
posted on 2006-11-22 17:50
Charles
閱讀(1509)
評論(2)
編輯
收藏
引用
所屬分類:
面試小算法
FeedBack:
#
re: 尋找最長遞增子序列
2006-11-28 11:58 |
踏雪赤兔
寫得有點(diǎn)復(fù)雜,可以用STL簡化代碼。不過看得出,還是O(NlogN)的算法
回復(fù)
更多評論
#
re: 尋找最長遞增子序列
2006-11-28 16:18 |
Charles
呵呵,因為這是準(zhǔn)備面試用的,所以不能寫成STL版的
回復(fù)
更多評論
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
【推薦】100%開源!大型工業(yè)跨平臺軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
Integer Partition
數(shù)1的個數(shù)
Fibonacci
簡單打印內(nèi)存的小玩意兒
矩陣式螺旋輸出
求最大公約數(shù)與最小公倍數(shù)
數(shù)內(nèi)置類型的bit數(shù)
計算Int最大最小值
兩個堆棧模擬一個隊列
檢測補(bǔ)碼表示
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Copyright ©2025 Charles Powered By:
博客園
模板提供:
滬江博客
<
2006年11月
>
日
一
二
三
四
五
六
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
決定開始寫工作日記,記錄一下自己的軌跡...
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(4)
給我留言
查看公開留言
查看私人留言
隨筆分類
(70)
Helper Utility(1)
讀書作筆記(3)
發(fā)泄(3)
面試小算法(27)
拿來主義(25)
隨筆(10)
一般人兒我不告訴他(1)
隨筆檔案
(71)
2008年3月 (1)
2008年2月 (1)
2007年7月 (3)
2007年3月 (3)
2007年1月 (18)
2006年12月 (16)
2006年11月 (29)
charles推薦訪問
Code Project
Linux Journal
Linux man pages
Single UNIX Specification
電子書1
電子書2
電子書3
搜索
積分與排名
積分 - 51397
排名 - 449
最新評論
1.?re: 簡單打印內(nèi)存的小玩意兒
不錯
--dddd
2.?re: 尋找最長連續(xù)遞增子序列
這個只能算是方法,效率太低了
--大物
3.?re: 數(shù)單詞數(shù)
規(guī)范化;門口麻煩機(jī);那么孔方兄那么媽媽法;釀母菌法那么;風(fēng)格那么明年;憤怒麻煩那么憤怒憤怒留念多孔蕈樂觀好看的里邊趕快巴拿馬城,新年巴拿馬國際法,不
--申訴臺
4.?re: 數(shù)單詞數(shù)
感到發(fā)現(xiàn)看來自動化大會單行本打開怎么趕快電子管矛盾感動不動門口‘大批看病黃道婆民主
--申訴臺
5.?re: 移除字符
評論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
--D_BOY
閱讀排行榜
1.?求最大公約數(shù)與最小公倍數(shù)(3532)
2.?COFF格式續(xù)篇—Lib文件的結(jié)構(gòu)zz(2273)
3.?計算Int最大最小值(2164)
4.?IA32/Windows&Linux高精度計時器(1760)
5.?尋找最長遞增子序列(1509)
評論排行榜
1.?計算Int最大最小值(5)
2.?IA32/Windows&Linux高精度計時器(4)
3.?兩個堆棧模擬一個隊列(3)
4.?ZMD(3)
5.?數(shù)單詞數(shù)(3)
久久亚洲国产精品成人AV秋霞
|
人妻无码αv中文字幕久久琪琪布
|
国产午夜电影久久
|
性做久久久久久久久浪潮
|
色综合久久中文字幕无码
|
久久最近最新中文字幕大全
|
久久精品国产日本波多野结衣
|
精品综合久久久久久97
|
免费观看成人久久网免费观看
|
久久有码中文字幕
|
色综合久久天天综合
|
久久久精品人妻一区二区三区蜜桃
|
久久天天躁狠狠躁夜夜avapp
|
久久综合狠狠色综合伊人
|
久久亚洲精品无码VA大香大香
|
久久久综合九色合综国产
|
一本久久a久久精品亚洲
|
久久人人爽人爽人人爽av
|
久久天堂电影网
|
国产亚洲精品美女久久久
|
热99RE久久精品这里都是精品免费
|
精品999久久久久久中文字幕
|
97精品伊人久久久大香线蕉
|
一本一道久久综合狠狠老
|
免费精品国产日韩热久久
|
国产精品女同一区二区久久
|
国产精品久久久久影视不卡
|
日韩精品久久久肉伦网站
|
久久婷婷五月综合97色直播
|
久久久99精品成人片中文字幕
|
青青青国产精品国产精品久久久久
|
狠狠精品久久久无码中文字幕
|
久久久久久综合网天天
|
久久久久久久女国产乱让韩
|
一本色道久久综合狠狠躁篇
|
日本精品久久久久影院日本
|
性做久久久久久久久久久
|
亚洲欧洲精品成人久久曰影片
|
欧美精品九九99久久在观看
|
国产色综合久久无码有码
|
午夜久久久久久禁播电影
|