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]最小的那個(gè)值。而track中記錄它的前一個(gè)值。這樣可以沿著track找回去。
posted on 2006-11-22 17:50
Charles
閱讀(1509)
評(píng)論(2)
編輯
收藏
引用
所屬分類:
面試小算法
FeedBack:
#
re: 尋找最長遞增子序列
2006-11-28 11:58 |
踏雪赤兔
寫得有點(diǎn)復(fù)雜,可以用STL簡化代碼。不過看得出,還是O(NlogN)的算法
回復(fù)
更多評(píng)論
#
re: 尋找最長遞增子序列
2006-11-28 16:18 |
Charles
呵呵,因?yàn)檫@是準(zhǔn)備面試用的,所以不能寫成STL版的
回復(fù)
更多評(píng)論
刷新評(píng)論列表
只有注冊用戶
登錄
后才能發(fā)表評(píng)論。
【推薦】100%開源!大型工業(yè)跨平臺(tái)軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
Integer Partition
數(shù)1的個(gè)數(shù)
Fibonacci
簡單打印內(nèi)存的小玩意兒
矩陣式螺旋輸出
求最大公約數(shù)與最小公倍數(shù)
數(shù)內(nèi)置類型的bit數(shù)
計(jì)算Int最大最小值
兩個(gè)堆棧模擬一個(gè)隊(duì)列
檢測補(bǔ)碼表示
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Copyright ©2025 Charles Powered By:
博客園
模板提供:
滬江博客
<
2008年3月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
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
31
1
2
3
4
5
決定開始寫工作日記,記錄一下自己的軌跡...
常用鏈接
我的隨筆
我的評(píng)論
我參與的隨筆
留言簿
(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
搜索
積分與排名
積分 - 51390
排名 - 449
最新評(píng)論
1.?re: 簡單打印內(nèi)存的小玩意兒
不錯(cuò)
--dddd
2.?re: 尋找最長連續(xù)遞增子序列
這個(gè)只能算是方法,效率太低了
--大物
3.?re: 數(shù)單詞數(shù)
規(guī)范化;門口麻煩機(jī);那么孔方兄那么媽媽法;釀母菌法那么;風(fēng)格那么明年;憤怒麻煩那么憤怒憤怒留念多孔蕈樂觀好看的里邊趕快巴拿馬城,新年巴拿馬國際法,不
--申訴臺(tái)
4.?re: 數(shù)單詞數(shù)
感到發(fā)現(xiàn)看來自動(dòng)化大會(huì)單行本打開怎么趕快電子管矛盾感動(dòng)不動(dòng)門口‘大批看病黃道婆民主
--申訴臺(tái)
5.?re: 移除字符
評(píng)論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
--D_BOY
閱讀排行榜
1.?求最大公約數(shù)與最小公倍數(shù)(3532)
2.?COFF格式續(xù)篇—Lib文件的結(jié)構(gòu)zz(2273)
3.?計(jì)算Int最大最小值(2163)
4.?IA32/Windows&Linux高精度計(jì)時(shí)器(1759)
5.?尋找最長遞增子序列(1509)
評(píng)論排行榜
1.?計(jì)算Int最大最小值(5)
2.?IA32/Windows&Linux高精度計(jì)時(shí)器(4)
3.?兩個(gè)堆棧模擬一個(gè)隊(duì)列(3)
4.?ZMD(3)
5.?數(shù)單詞數(shù)(3)
久久久青草久久久青草
|
久久99精品国产一区二区三区
|
成人久久久观看免费毛片
|
99久久婷婷国产综合精品草原
|
亚洲伊人久久成综合人影院
|
伊人色综合久久天天
|
久久国产免费观看精品
|
成人妇女免费播放久久久
|
婷婷五月深深久久精品
|
久久永久免费人妻精品下载
|
久久国产乱子伦精品免费强
|
好属妞这里只有精品久久
|
久久精品视频网
|
亚洲国产精品久久久久久
|
国内精品久久久久久麻豆
|
亚洲国产成人久久综合碰碰动漫3d
|
亚洲国产成人精品久久久国产成人一区二区三区综
|
久久久无码精品亚洲日韩按摩
|
久久久精品波多野结衣
|
久久毛片一区二区
|
精品久久8x国产免费观看
|
久久91综合国产91久久精品
|
99久久精品国产高清一区二区
|
久久av高潮av无码av喷吹
|
亚洲伊人久久成综合人影院
|
日日噜噜夜夜狠狠久久丁香五月
|
九九久久99综合一区二区
|
欧美一级久久久久久久大片
|
亚洲乱码中文字幕久久孕妇黑人
|
1000部精品久久久久久久久
|
久久久久国产精品麻豆AR影院
|
久久久无码精品亚洲日韩蜜臀浪潮
|
无遮挡粉嫩小泬久久久久久久
|
狠狠人妻久久久久久综合蜜桃
|
精品久久久噜噜噜久久久
|
岛国搬运www久久
|
久久国产乱子精品免费女
|
亚洲精品无码久久毛片
|
成人综合伊人五月婷久久
|
久久99久久99精品免视看动漫
|
精品久久久久成人码免费动漫
|