ホームページ >ウェブフロントエンド >jsチュートリアル >行列のすべての行が相互に循環回転しているかどうかをチェックする JavaScript プログラム

行列のすべての行が相互に循環回転しているかどうかをチェックする JavaScript プログラム

WBOY
WBOY転載
2023-08-21 22:45:081352ブラウズ

行列のすべての行が相互に循環回転しているかどうかをチェックする JavaScript プログラム

行列は一種の 2 次元配列であり、行を定義する固定配列の配列があり、この配列のインデックスごとに固定長の配列が存在し、その長さはこれらの配列の数は、行列内に存在する列の数を定義します。マトリックスによって提供されるこれらのセルには、あらゆる種類のデータ型を格納できます。

行列が提供され、各行にはいくつかの整数が含まれており、各行が相互に回転しているかどうかを確認する必要があります。相互の回転とは、ある数値または左または右の回転によって、各行の同じ組み合わせを生成できることを意味します。

例 1

让我们假定的質問:

リーリー

説明: 最初の行が定数であると仮定し、残りの行を回転すると、次のような結果が得られます。

2 番目の行を右に 1 回回転し、2 番目の行を右に 2 回回転することで、どちらも最初の行と同じにすることができます。

例 2

の翻訳:

例 2

リーリー

解決策: 上のブロックでは、2 行目と 3 行目は同じですが、何回回転しても 2 行目を 1 行目に変更することはできません。 ###アプローチ###

問題を理解するための適切な例を見てきました。次に、コードを実装する手順を見てみましょう -

まず、2 つの指向性と交換技術を使用して、パラメータ伝達の要素として 1 つの関数を回転させます。

    その後、検出関数を決定し、その決定されたクエリを検出関数に渡します。
  • この関数では、最初に行と列の数を取得することによってシーケンスの長さを取得し、1 行目から最後の行までの循環と 0 行目の比較に使用します。

  • 現在の行と最初の行が同じ場合は、次の行に進みます。
  • そうでない場合は、回転関数を使用して、指定された行を次の回転位置に回転させます。

  • 0 番目の行または列の長さと同じ配列が見つかるまで、このプロセスを何度も繰り返します。
  • 最大回転後でも現在の行が 0 番目と等しくない場合は、false を返します。
  • すべての行が最終的に同等になった場合は、true を返します。
  • ###例###

    次の例では、入力と出力が互いに循環しているかどうかを検査します。

    入力:行列 = [ [ 1, 2, 3 ], [ 2, 3, 1 ], [ 3, 1, 2 ] ]
  • 出力: はい

    リーリー

    出力
  • リーリー
  • 時間と空の度数

    上記のコードの時間計算量は O(N*M*M) です。ここで、N は行の数、M は指定された行列に存在する列の数です。行列を行単位で走査し、係数または N を与え、行の比較と回転には係数または M*M を与えます。
  • 追加の空間を使用していないため、上記のコードの空間度は O(1) です。 ###結論###

    この教義では、私は 1 行ごとに回転し、最初と比較することによって、所定のシーケンスのすべての行が互いに循環回転しているかどうかを検査する JavaScript プログラムを完成しました。上記のコードの時間倍数は O(N*M*M)、空間倍数は O(1) です。

以上が行列のすべての行が相互に循環回転しているかどうかをチェックする JavaScript プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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