leedcode 最長連續數列

2021-08-28 15:00:33 字數 1105 閱讀 8067

輸入乙個亂序的連續數列,輸出其中最長連續數列長度,要求演算法複雜度為 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上遇到的,解完題搜了一下,網上有很多解法,但好像唯獨沒...