2016-07-12 5 views
0

が想定最大の重複occurancesの範囲ではない彼らの最大数を計算する必要がある(起動、停止):は私が番号のデータセットを持っていることを

4556745 , 4556749 
4556749 , 5078554 

...ので、私

に最大オーバーラップが発生する範囲(開始、停止)を印刷するためにコードの塊を作成したい。 今まで私は、最大出現数ではなく、彼らはされた範囲を計算するために管理している

私の擬似コード - ロジックはこのようなものです:。

maxoverlap = zero 
currentoverlap = zero 
i equals zero 
j equals zero 
m equals len(in_mumbers) 
n equals len(out_numbers) 
while (I less_than m and j less_than n): 
    if (in_numbers[i] less_than out_numbers[j]) 
     currentoverlap equals currentoverlap + 1 
     maxoverlap equals max(maxoverlap, currentoverlap) 
     i equals i + 1 
    else: 
     currentoverlap equals currentoverlap - 1 
     j = j + 1 


print maxoverlap 

は、任意のアイデアがあり、測定値などを提案?

+0

これをPythonで実装しようとしましたか?それは動作しますか? –

+0

私は、上のサンプルデータセットには何もないので、私たちが何を話しているのか分かりません。行iの停止は、行i + 1の開始より重複する必要があります。彼らはここで等しいです。 –

+0

@Ev。 Kounisタイプミスありがとう。 –

答えて

0

入力データのタプル(開始、停止)全体ではなく、必ず重複している範囲であっても構いません。各番号の発生をカウントする

(4556745, 4556749) → range(4556745, 4556749) 

をして、私はそれらを処理されます:

は、だから私は、開始と停止の間のすべての範囲を含む範囲であなたのすべてのあなたのタプル(起動、停止)を変換したいです(例のために)。

for range in ranges: 
    for number in range: 
     d.setdefault(num, 0) 
     d[num]+=1 

あなたが望むものを得ることができます。最大発生数(「最大交差点」と呼ばれる)と交差点の数を取得するには、get keys by maximum valueのようなものを使用できます。

+0

非常に参考にした考え私はこれを実装しようとします。 –

関連する問題