Rumah > Artikel > hujung hadapan web > Program JavaScript untuk menyemak sama ada semua baris matriks adalah putaran kitaran antara satu sama lain
Matriks ialah sejenis tatasusunan 2-D di mana terdapat tatasusunan tatasusunan tetap yang mentakrifkan baris dan bagi setiap indeks tatasusunan ini terdapat tatasusunan panjang tetap hadir dan panjang tatasusunan ini menentukan bilangan lajur terdapat dalam matriks. Kita boleh menyimpan sebarang jenis data dalam sel ini yang disediakan oleh matriks.
Kami akan dibekalkan dengan matriks dan setiap baris mengandungi beberapa integer dan kami perlu menyemak sama ada setiap baris adalah putaran antara satu sama lain atau tidak. Putaran antara satu sama lain bermakna dengan beberapa nombor atau pusingan kiri atau kanan kita boleh menghasilkan gabungan yang sama bagi setiap baris.
让我们假设给定的矩阵是:
mat = [ [1, 2, 3], [2, 3, 1], [3, 1, 2]] Output: Yes
Penjelasan: Dengan mengandaikan baris pertama adalah malar dan memutar baris yang selebihnya kita boleh mendapatkan hasilnya sebagai:
Dengan memutar baris kedua satu kali ke kanan dan memutar baris kedua dua kali ke kanan kita boleh menjadikan kedua-duanya sama seperti baris pertama.
mat = [ [1, 2, 3], [ 2, 1, 3], [ 1, 2, 3]] Output: No
解释:在上面的矩阵中,第一行和第三行是相同的,但我们无法通过任意欗次行他为第一行。
Kami telah melihat contoh yang sesuai untuk memahami masalah sekarang mari kita lihat langkah-langkah untuk melaksanakan kod −
首先,我们将定义一个函数rotate,使用两个指针和交换技术来旋转作丰为参作为个参元素。
之后,我们将定义检查函数,并将给定的矩阵传递给检查函数。
在该函数中,我们首先通过获取行和列的数量来获取矩阵的长度,并使猬并使猬后一行与第0行进行比较。
如果当前行与第一行相同,则我们将跳过到下一行。
否则,我们将调用 rotate 函数,并将给定的行旋转到其下一个旋转位置。
🎎输入:matriks = [ [ 1, 2, 3 ], [ 2, 3, 1 ], [ 3, 1, 2 ] ]
Output: Ya
// function to rotate the given array function rotate(arr){ var l = 0; var r = arr.length-1; while(l < r){ arr[l] += arr[r]; arr[r] = arr[l]-arr[r]; arr[l] = arr[l]-arr[r]; l++; } return arr; } // function to check if the given matrix can have the same rows // after the certain number of rotations function check(mat){ // getting number of rows var rows = mat.length // getting number of columns var cols = mat[0].length // traversing over the each row of given matrix for(var i = 1; i < rows; i++){ var k = 0; while(k < cols) { var j = 0; for(j = 0; j<cols; j++){ if(mat[0][j] != mat[i][j]){ break; } } if(j == cols){ break; } else{ mat[i] = rotate(mat[i]); } k++; } if(k == cols){ return false; } } return true; } // defining the matrix var mat = [ [1, 2, 3], [2, 3, 1], [3, 1, 2]]; console.log("The given matrix is: "); console.log(mat); if(check(mat) == true){ console.log("Yes, all the rows of the matrix are circular rotation of each other"); } else{ console.log("NO, all the rows of the matrix are not in the circular rotation of each other"); }
输出
The given matrix is: [ [ 1, 2, 3 ], [ 2, 3, 1 ], [ 3, 1, 2 ] ] Yes, all the rows of the matrix are circular rotation of each other
上述代码的空间复杂度为O(1),因为我们没有使用任何额外的空间。
Kesimpulan
Atas ialah kandungan terperinci Program JavaScript untuk menyemak sama ada semua baris matriks adalah putaran kitaran antara satu sama lain. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!