ホームページ  >  記事  >  バックエンド開発  >  番号の優先順位に基づいて、変換は次のようになります。 番号の優先順位に基づいて次に大きい番号

番号の優先順位に基づいて、変換は次のようになります。 番号の優先順位に基づいて次に大きい番号

王林
王林転載
2023-08-28 08:45:101220ブラウズ

番号の優先順位に基づいて、変換は次のようになります。 番号の優先順位に基づいて次に大きい番号

通常の数値体系では、0 が最小の数、9 が最大の数です。この問題では、長さ 10 のリストを取得します。インデックス 0 からインデックス 9 までは、その番号の優先順位を表す番号を表します。リストは昇順になります。これは、最後のインデックスに表示される番号の優先順位が最も高いことを意味します。また、数値も与えられるので、現在の数値よりわずかに大きい次の数値を見つける必要があります。

リーリー ###説明###

指定された優先順位の配列から、1 の優先順位が 2 および 3 よりも高いことがわかります。 3 は 2 よりも優先されます。したがって、特定の数値の次の並べ替えが 2 と 3 を交換することによって実現される場合。

リーリー ###説明###

指定された優先順位配列から、1 の優先順位が 2 および 3 の両方よりも大きいことがわかります。3 の優先順位は 2 と比較して大きいです。したがって、利用可能な次の並べ替えはありません。

###方法###

このアプローチでは、C プログラミング言語によって提供される標準テンプレート ライブラリ (STL) の概念を使用して、次の順列を取得します。手順を見てみましょう −

まず、次の番号の番号と、その番号の優先順位を昇順で表す配列を取得します。

    事前定義された関数を呼び出して、現在指定されている数値より大きい次の数値を見つけます。
  • 指定された数値と配列のパラメーターを取る関数を定義します。
  • グローバル配列を定義し、後で使用するために指定された配列から取得した各桁の優先順位を保存します。

  • 次の置換関数を適用するために、指定された数値を文字列に変換します。
  • stl の次の置換関数で文字列の文字を比較するために使用するカスタム関数を定義します。
  • 次の順列を取得した後、文字列を整数に変換して返します。

  • Example

    の中国語訳は次のとおりです:
  • Example
  • リーリー ###出力### リーリー

    時間と空間の複雑さ

  • 上記のコードの時間計算量は O(N) で、N は指定された数値の桁数です。
  • 次の置換関数を使用するために新しい文字列を作成しているため、上記のコードの空間計算量は O(N) です。

: 現在の数値がすべての順列の中で大きい場合、次の順列関数は false を返し、次の順列が存在しないため同じ数値を返します。

###結論は###

このチュートリアルでは、現在の数値より大きい次の数値を見つけるコードを実装しましたが、数値の優先順位は 0 から 9 の順ではなく、別の配列で与えられます。 STL 関数 next_permutation とカスタム関数を使用して、新しい優先度に基づいて次の番号を取得しました。上記のコードの時間と空間の複雑さは O(桁数) です。

以上が番号の優先順位に基づいて、変換は次のようになります。 番号の優先順位に基づいて次に大きい番号の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。