Python最長連續數列的O n 解法

2021-08-27 05:10:17 字數 1066 閱讀 8125

題目

輸入乙個亂序的連續數列,輸出其中最長連續數列長度,要求演算法複雜度為 o(n) 。

輸入樣例

100,4,200,1,3,2

54,55,300,12

1 5,4,3,2,1

1,2,3,4,5,6

輸出樣例

421

56

這道題是今天在小公尺oj上遇到的,解完題搜了一下,網上有很多解法,但好像唯獨沒有我的這種解法,寫出來與大家分享,一起學習。

這種解法是我再看另乙個演算法題時獲得的靈感,那道題是這樣的:有40億個整數,再給乙個新的整數,怎樣判斷整數是否在40億個數中?

其中一種解法是申請2的32次方個位,如果乙個數在這40億個數中,那麼就在對應的位置置1,這種解法總共需要的空間才500mb左右,具體解法我們在這不討論,下面我們來看看上面的題。

很容易模擬,給出的數,在相應的位置1,比如,"1,9,2,7,3",那麼,在1、2、3、7、9位置1,其他位是0,最後形成的是"101000111"現在,我們只需要判斷最多有多少個1連續就行了,這是很簡單的工作,python中bin()函式會把數轉換成二進位制並且用字串表示,只要對得到的字串進行處理就可以了。

具體**如下:

def solution(line):

data = line.split(",")

num = 0

# 在對應的位置1

這種方法在資料量非常大的時候能夠有效地減少執行所需的空間,可以看到,在資料量較小時,執行速度也並不慢。

leedcode 最長連續數列

輸入乙個亂序的連續數列,輸出其中最長連續數列長度,要求演算法複雜度為 o n 54,55,300,12,56 3。輸入樣例100,4,200,1,3,2 54,55,300,12 15,4,3,2,1 1,2,3,4,5,6輸出樣例421 56思路 將所有數都加入集合中,然後再遍歷這些數,因為我們能...

最長連續等差子數列

描述 給定乙個長度為n的整數數列,你需要在其中找到最長連續子數列的長度,並滿足這個子數列是等差的。注意公差小於或等於0的情況也是允許的。輸入 第一行為測試資料的組數t 1 t 100 請注意,任意兩組測試資料之間是相互獨立的。每組資料報含兩行 第一行為乙個整數n 1 n 100 表示給定數列長度。第...

最長公共子數列(不連續)

最長公共子串行 南陽理工acm 本人覺得這是一道尤其水的動態規劃,通過二維陣列相等以及不相等兩種情況下的最優值尋找即可ac 具體一點就是if c1 i c2 j 計數陣列 a i j a i 1 j 1 1 否則 a i j max a i 1 j a i j 1 如下 include includ...