Heim  >  Artikel  >  Web-Frontend  >  JavaScript-Programm zum K-fachen Drehen einer Matrix nach rechts

JavaScript-Programm zum K-fachen Drehen einer Matrix nach rechts

王林
王林nach vorne
2023-08-24 22:09:061421Durchsuche

将矩阵向右旋转 K 次的 JavaScript 程序

Der Begriff „Rechtsdrehung einer Matrix“ bedeutet, jede Spalte in der Matrix nach rechts zu verschieben. Falls angegeben, wird dieser Vorgang „k“-mal wiederholt. Mit anderen Worten: Es handelt sich um eine Rechtsverschiebung der Matrix, die „k“-mal auftritt. Dieses Programm kann mit verschiedenen Programmiersprachen implementiert werden, aber eine einfache, aber effektive Möglichkeit besteht darin, JavaScript zu verwenden, um eine Matrix k-mal nach rechts zu drehen.

Wie kann man eine Matrix K-mal nach rechts drehen?

Das k-fache Rechtsdrehen einer Matrix ist einfach. Dazu muss jede Spalte der Matrix k-mal nach rechts verschoben werden. Um dies zu demonstrieren, führen wir ein Beispiel für die k-malige manuelle Rechtsdrehung einer Matrix durch.

Beispiel

Nehmen wir eine Matrix der Größe N*M und eine Zahl K. Wir müssen die Matrix k-mal nach rechts drehen.

Input matrix: N = 4, M = 4, K = 3
1 2 3 4 
6 7 8 9 
0 9 8 7 
5 4 3 2 
Output matrix:
4 1 2 3
9 6 7 8
7 0 9 8
2 5 4 3

Methode

Der Prozess, k korrekte Drehungen durchzuführen, scheint leicht zu verstehen, ist jedoch möglicherweise etwas schwierig umzusetzen. Die Methode beinhaltet das Kopieren der Elemente jeder Spalte der Zeile i in ein temporäres Array, bis zu m-k. Dann verschieben wir die Elemente von k zum Ende der Zeile i an den Anfang. Schließlich kopieren wir die Elemente aus dem temporären Array zurück an das Ende jeder i-Zeile der Matrix.

Schauen wir uns den Algorithmus der Methode an, die wir verwenden werden.

Algorithmus für rechtsdrehende Matrix K-mal

Schritt 1 – Bestimmen Sie die Anzahl der Zeilen und Spalten in der Matrix.

Schritt 2 – Berechnen Sie basierend auf dem Wert von k, wie oft jede Zeile verschoben werden muss. Dies kann mit dem Modulo-Operator (%) erfolgen.

Schritt 3 – Erstellen Sie für jede Zeile in der Matrix ein neues Array mit den Elementen, die verschoben werden müssen.

Schritt 4 – Verwenden Sie die Methode splice(), um die verschobenen Elemente aus der ursprünglichen Zeile zu entfernen und sie am Anfang der neuen Zeile hinzuzufügen.

Schritt 5 – Ursprüngliche Zeile auf neue Zeile setzen.

Schritt 6 – Wiederholen Sie die Schritte 3–5 für jede Zeile in der Matrix.

Beispiel

In diesem Programm definieren wir eine MatrixRotation-Klasse, die über zwei statische Methoden verfügt: displayMatrix() und rotationMatrixRight().

Die Methode

displayMatrix() nimmt eine Matrix als Eingabe und zeigt sie in der Konsole an. Es verwendet eine for-Schleife, um jede Zeile in der Matrix zu durchlaufen und sie in der Konsole zu protokollieren.

Die Methode

rotateMatrixRight() nimmt als Eingabe eine Matrix und eine Zahl k und gibt eine neue Matrix zurück, die um k Positionen nach rechts gedreht wurde. Zur Durchführung der Drehung wird derselbe Algorithmus wie in der vorherigen Antwort verwendet.

Im Beispielverwendungscode definieren wir eine Eingabematrix und einen k-Wert und rufen dann die Methode „rotateMatrixRight()“ auf, um die Drehung durchzuführen. Wir zeigen die Eingabe- und Ausgabematrizen mit der Methode displayMatrix() an.

class MatrixRotation {
   static displayMatrix(matrix) {
      for (let i = 0; i < matrix.length; i++) {
         console.log(matrix[i]);
      }
   }
   static rotateMatrixRight(matrix, k) {
      const numRows = matrix.length;
      const numCols = matrix[0].length;
      // Calculate the number of times each row needs to be shifted
      const shifts = k % numCols;
      // Rotate each row of the matrix
      for (let i = 0; i < numRows; i++) {
         const row = matrix[i];
         // Create a new row that contains the shifted elements
         const newRow = row.slice(numCols - shifts).concat(row.slice(0, numCols - shifts));
         // Set the original row to the new row
         matrix[i] = newRow;
      }
      return matrix;
   }
}
// Example usage
const inputMatrix = [
   [1, 2, 3],
   [4, 5, 6],
   [7, 8, 9]
];
const k = 2;
console.log("Input matrix:");
MatrixRotation.displayMatrix(inputMatrix);
const outputMatrix = MatrixRotation.rotateMatrixRight(inputMatrix, k);
console.log("Output matrix:");
MatrixRotation.displayMatrix(outputMatrix);

Fazit

Drehen Sie eine Matrix k-mal nach rechts mit ein paar einfachen Schritten in JavaScript. Der erste Schritt besteht darin, die Anzahl der Zeilen und Spalten in der Matrix zu bestimmen. Der nächste Schritt besteht darin, basierend auf dem Wert von k zu berechnen, wie oft jede Zeile nach rechts verschoben werden muss. Sobald die Anzahl der Verschiebungen bestimmt ist, kann das Programm jede Zeile der Matrix durchlaufen, ein neues Array erstellen, das die verschobenen Elemente aus der ursprünglichen Zeile enthält, und die ursprüngliche Zeile mit den verschobenen Elementen aktualisieren. Indem wir diese Schritte befolgen, können wir eine Matrix in JavaScript k-mal nach rechts drehen.

Das obige ist der detaillierte Inhalt vonJavaScript-Programm zum K-fachen Drehen einer Matrix nach rechts. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen