1

次の入力があります。

  • 許容レベル T
  • 数字の数 N
  • N 数

タスクは、それらが許容レベル内にあるように、これらの N 数の中で最長の期間を見つけることです。lより正確には、部分文字列とr2 つの異なる要素の左境界と右境界が与えられ、a12a2つの境界の間にそれを保持する必要があり|a1 - a1| <= Tます。効率的な方法でこれを行うにはどうすればよいですか?私のアプローチは次のとおりです。

def getLength(T, N, numbers):

    max_length = 1

    for i in range(0, N-1):
        start = numbers[i]
        numlist = [start]

        for j in range(i+1, N):
            end = numbers[j]
            numlist.append(end)

            if (max(numlist) - min(numlist)) > T:
                break

            if (j-i+1) > max_length:
                max_length = j-i+1

    return max_length

編集:明確にするために。コードは期待どおりに機能します。ただし、十分に効率的ではありません。もっと効率よくやりたい。

4

1 に答える 1