旋转矩阵元素的 Javascript 程序
给定一个矩阵,顺时针旋转其中的元素。
示例:
Input
1 2 3
4 5 6
7 8 9
Output:
4 1 2
7 5 3
8 9 6
For 4*4 matrix
Input:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
Output:
5 1 2 3
9 10 6 4
13 11 7 8
14 15 16 12
这个想法是使用类似于程序的循环来打印螺旋形式的矩阵。一个接一个地旋转元素的所有环,从最外面开始。要旋转环,我们需要执行以下操作。 1)移动顶行的元素。 2)移动最后一列的元素。 3)移动最下面一行的元素。 4)移动第一列的元素。 有内圈时,对内圈重复上述步骤。
以下是上述想法的实现。感谢 Gaurav Ahirwar 提出以下解决方案。
java 描述语言
<script>
// Javascript program to rotate a matrix
let R = 4;
let C = 4;
// A function to rotate a matrix
// mat[][] of size R x C.
// Initially, m = R and n = C
function rotatematrix(m, n, mat)
{
let row = 0, col = 0;
let prev, curr;
/*
row - Staring row index
m - ending row index
col - starting column index
n - ending column index
i - iterator
*/
while (row < m && col < n)
{
if (row + 1 == m || col + 1 == n)
break;
// Store the first element of next
// row, this element will replace
// first element of current row
prev = mat[row + 1][col];
// Move elements of first row
// from the remaining rows
for(let i = col; i < n; i++)
{
curr = mat[row][i];
mat[row][i] = prev;
prev = curr;
}
row++;
// Move elements of last column
// from the remaining columns
for(let i = row; i < m; i++)
{
curr = mat[i][n - 1];
mat[i][n - 1] = prev;
prev = curr;
}
n--;
// Move elements of last row
// from the remaining rows
if (row < m)
{
for(let i = n - 1; i >= col; i--)
{
curr = mat[m - 1][i];
mat[m - 1][i] = prev;
prev = curr;
}
}
m--;
// Move elements of first column
// from the remaining rows
if (col < n)
{
for(let i = m - 1; i >= row; i--)
{
curr = mat[i][col];
mat[i][col] = prev;
prev = curr;
}
}
col++;
}
// Print rotated matrix
for(let i = 0; i < R; i++)
{
for(let j = 0; j < C; j++)
document.write( mat[i][j] + " ");
document.write("<br>");
}
}
// Driver code
// Test Case 1
let a = [ [ 1, 2, 3, 4 ],
[ 5, 6, 7, 8 ],
[ 9, 10, 11, 12 ],
[ 13, 14, 15, 16 ] ];
rotatematrix(R, C, a);
// This code is contributed by avanitrachhadiya2155
</script>
输出:
5 1 2 3
9 10 6 4
13 11 7 8
14 15 16 12
更多详情请参考旋转矩阵元素整篇文章!
版权属于:月萌API www.moonapi.com,转载请注明出处