リスト操作を最適化する方法は?(CodeFights)

HoldenGs

だから私は小さなリストでうまく機能する関数を持っています。その機能は、シーケンスから1つの要素を削除すると、シーケンスが厳密に増加するシーケンスになるかどうかを確認することです。

def almostIncreasingSequence(sequence):
    length = len(sequence)
    for i in range(1, length):
        newSequence = sequence[:i-1] + sequence[i:]
        if checkIfSorted(newSequence, length):
            return True
    return checkIfSorted(sequence[:length-1], length)

def checkIfSorted(sequence, length):
    for i in range(1, length - 1):
        if sequence[i-1] >= sequence[i]:
            return False
    return True

しかし、最大100,000要素の長さのリストで機能するために必要です。これをより速く機能させるために、どのような最適化を行うことができますか?現在、100,000のリストでは非常に遅く、1秒間に数千の要素を処理します。

ロリー・ドートン

私はこのサイトにあなたとほぼ同じ質問に答える別の答えを書きましたが、私はシーケンスから最大で1つの要素を削除すると厳密に増加するかどうかを確認するためのものでした。それがあなたの言いたいことかもしれません-実際的な違いはないようです。ここにコピーした私の2番目の解決策が必要なようです。

def first_bad_pair(sequence, k):
    """Return the first index of a pair of elements in sequence[]
    for indices k-1, k+1, k+2, k+3, ... where the earlier element is
    not less than the later element. If no such pair exists, return -1."""
    if 0 < k < len(sequence) - 1:
        if sequence[k-1] >= sequence[k+1]:
            return k-1
    for i in range(k+1, len(sequence)-1):
        if sequence[i] >= sequence[i+1]:
            return i
    return -1

def almostIncreasingSequence(sequence):
    """Return whether it is possible to obtain a strictly increasing
    sequence by removing no more than one element from the array."""
    j = first_bad_pair(sequence, -1)
    if j == -1:
        return True  # List is increasing
    if first_bad_pair(sequence, j) == -1:
        return True  # Deleting earlier element makes increasing
    if first_bad_pair(sequence, j+1) == -1:
        return True  # Deleting later element makes increasing
    return False  # Deleting either does not make increasing

私の最初の解決策のように、スライスを結合することによって新しいシーケンスを作成するため、コードは遅くなります。これにより、シーケンスのほぼ全体がコピーされ、それを何度も実行するとコードの速度が低下します。上記のコードは、シーケンスをチェックして厳密に増加しているかどうかを確認するルーチンを複雑にすることで、これを回避しています。詳細については、他のリンクされた回答を確認してください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

mysqlリクエストを最適化する方法は?

分類Dev

スクリプトの速度を最適化する方法は?

分類Dev

jsでスクリプトを最適化する方法は何ですか?

分類Dev

Twitterテキストのクリーニングを最適化する方法は?

分類Dev

リスト内包表記または代替案を最適化する方法

分類Dev

バイナリファイル操作を最適化する方法は?

分類Dev

"return false" がスクリプトを最適化する方法

分類Dev

リストを含むオブジェクトのフィルタリングを最適化する方法は?

分類Dev

リストの付属物を含むネストされたforループを最適化する方法は?

分類Dev

mongodbでクエリを適切に最適化する方法は?

分類Dev

Elasticsearch:スクリプト関数のソースパラメーターを最適化する方法は?

分類Dev

Laravel 7でクエリステートメントを最適化する方法は?

分類Dev

隣接リストでdfsトラバーサルを最適化する方法は?

分類Dev

複数のCASEステートメントでSELECTクエリを最適化する方法は?

分類Dev

4 ** k回実行されるPythonスクリプトを最適化する方法は?

分類Dev

最適化されたrequire.jsを使用して外部スクリプトをロードする方法は?

分類Dev

パンダ-辞書リストの列拡張-最適化する方法は?

分類Dev

ReactJavaScriptこれを最適化する方法if /またはステートメント

分類Dev

ネストされたif句を最適化する方法はありますか?

分類Dev

PHPプロセスのメモリ使用量を最適化する方法は?

分類Dev

SQLクエリを最適な方法で暗号化する方法は?

分類Dev

複数のリストの数学演算のコードを最適化する方法

分類Dev

Pythonリストの組み合わせの比較を最適化する方法

分類Dev

このネストされたSQLSELECTクエリを最適化する方法

分類Dev

AWS Lambdaを最適化する方法は?

分類Dev

最適化:最も最適化された方法でクラスターのリストを作成します

分類Dev

ifelseステートメントを最適化する方法

分類Dev

Typescriptのifステートメントを最適化する方法

分類Dev

結合クエリを最適化する方法は?

Related 関連記事

  1. 1

    mysqlリクエストを最適化する方法は?

  2. 2

    スクリプトの速度を最適化する方法は?

  3. 3

    jsでスクリプトを最適化する方法は何ですか?

  4. 4

    Twitterテキストのクリーニングを最適化する方法は?

  5. 5

    リスト内包表記または代替案を最適化する方法

  6. 6

    バイナリファイル操作を最適化する方法は?

  7. 7

    "return false" がスクリプトを最適化する方法

  8. 8

    リストを含むオブジェクトのフィルタリングを最適化する方法は?

  9. 9

    リストの付属物を含むネストされたforループを最適化する方法は?

  10. 10

    mongodbでクエリを適切に最適化する方法は?

  11. 11

    Elasticsearch:スクリプト関数のソースパラメーターを最適化する方法は?

  12. 12

    Laravel 7でクエリステートメントを最適化する方法は?

  13. 13

    隣接リストでdfsトラバーサルを最適化する方法は?

  14. 14

    複数のCASEステートメントでSELECTクエリを最適化する方法は?

  15. 15

    4 ** k回実行されるPythonスクリプトを最適化する方法は?

  16. 16

    最適化されたrequire.jsを使用して外部スクリプトをロードする方法は?

  17. 17

    パンダ-辞書リストの列拡張-最適化する方法は?

  18. 18

    ReactJavaScriptこれを最適化する方法if /またはステートメント

  19. 19

    ネストされたif句を最適化する方法はありますか?

  20. 20

    PHPプロセスのメモリ使用量を最適化する方法は?

  21. 21

    SQLクエリを最適な方法で暗号化する方法は?

  22. 22

    複数のリストの数学演算のコードを最適化する方法

  23. 23

    Pythonリストの組み合わせの比較を最適化する方法

  24. 24

    このネストされたSQLSELECTクエリを最適化する方法

  25. 25

    AWS Lambdaを最適化する方法は?

  26. 26

    最適化:最も最適化された方法でクラスターのリストを作成します

  27. 27

    ifelseステートメントを最適化する方法

  28. 28

    Typescriptのifステートメントを最適化する方法

  29. 29

    結合クエリを最適化する方法は?

ホットタグ

アーカイブ