Re: [問題] 一維陣列中最長位置連續但數值相異的序列
看板C_and_CPP (C/C++)作者softwind (software everywhere)時間16年前 (2009/04/30 00:44)推噓0(0推 0噓 1→)留言1則, 1人參與討論串4/5 (看更多)
※ 引述《bleed1979 (十三)》之銘言:
: 想請教在不用STL的情況下, 也就是以C語言來解有沒有更好的演算法
: 一維陣列:1, 2, 4, 3, 1, 5
: 最長位置連續但數值相異整數序列為 2, 4, 3, 1, 5
: 思考上有幾個限制
: 限制1.不能使用STL(用Map解就很快了)
: 限制2.整數最小為1, 最大到10^9(動態宣告即使是char也會超出規定的記憶體限制)
: 限制3.一定是位置連續相異(不太能排序解, 排序解適用位置不連續的情況)
: 限制4.陣列長度為100萬個
: 我的演算法為
: 分成左指標和右指標
: 左指標代表序列開頭, 右指標依序向右遞增
: 如果右指標指到的數可以在兩個指標之間(含左指標, 不含右指標)找到的話
: 設一個變數代表最長相異序列的長度, 小於右指標 - 左指標 + 1 就更新其值
: 左指標更新為指向找到位置 + 1
: 這個演算法耗費大量時間在找兩個指標之間的數
: 因為連續相異我只得用循序的方式查找
: 最差情況是O(n^2)
: 請教更高效率的演算法
: Bleed
sorry~ 我有點搞混了
它的意思是 在他給的 1D array中
從[1]開始 連續取值 到一個set中 直到不能insert到set中為止 的長度
稱作 從[1]開始的(相異)雪花數量 對吧?
so 從開頭[1]~[10^6] 每一個都算出雪花數量後
找出最大的雪花數量 稱作 最大(相異)雪花數量 對嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.122.53
→
04/30 00:52, , 1F
04/30 00:52, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 5 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章