輸入乙個亂序的連續數列,輸出其中最長連續數列長度,要求演算法複雜度為 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
思路
將所有數都加入集合中,然後再遍歷這些數,因為我們能o(1)的判斷某個數是否在集合中,所以我們可以乙個個向上或者向下檢查。為了避免之後重複檢查,我們每查到乙個數,都要將其從集合中移除。這樣每遇到乙個數,都檢查它的上下邊界,就能找出最長的連續數列。時間複雜度仍是o(n),因為我們不會檢查不存在於陣列的數,而存在於陣列的數也只會檢查一次。
package main
import
("bufio"
"fmt"
"os"
"strconv"
"strings"
)func
solution
(line string
)string
for_
,v:=
range strarray
// return true
//} len1++
delete
(m,fmt.
sprintf
("%v"
,a))
a++_,ok=m[fmt.
sprintf
("%v"
,a)]
}//尋找下邊界
b,_:=strconv.
atoi
(v) b=b-
1for
_,ok:=m[fmt.
sprintf
("%v"
,b)]
;ok;
if len1>maxlen
}// 返回處理後的結果
return fmt.
sprintf
("%v"
,maxlen)
}func
main()
}
LeedCode 最長連續序列
給定乙個未排序的整數陣列,找出最長連續序列的長度。要求演算法的時間複雜度為 o n 輸入 100,4,200,1,3,2 輸出 4 解釋 最長連續序列是 1,2,3,4 它的長度為 4。分析 本題降低時間複雜度的關鍵是 1,使用雜湊表的結構 2.針對不同的序列計算,已經計算的序列及時的剪枝 int ...
最長連續等差子數列
描述 給定乙個長度為n的整數數列,你需要在其中找到最長連續子數列的長度,並滿足這個子數列是等差的。注意公差小於或等於0的情況也是允許的。輸入 第一行為測試資料的組數t 1 t 100 請注意,任意兩組測試資料之間是相互獨立的。每組資料報含兩行 第一行為乙個整數n 1 n 100 表示給定數列長度。第...
Python最長連續數列的O n 解法
題目 輸入乙個亂序的連續數列,輸出其中最長連續數列長度,要求演算法複雜度為 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上遇到的,解完題搜了一下,網上有很多解法,但好像唯獨沒...