const matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
const transposeMatrix = (matrix) => {
const matrix2 = Array.from({ length: matrix[0].length }, () => Array(matrix.length))
for (let i = 0; i < matrix[0].length; i++) {
matrix2[i] = []
for (let j = 0; j < matrix.length; j++) {
matrix2[i][j] = matrix[j][i]
}
}
return matrix2
}
const rotateMatrix = (matrix) => {
let m0 = matrix[0].length
let m = matrix.length
for (let i = 0; i < m; i++) {
for (let j = i + 1; j < m0; j++) {
let temp = matrix[i][j]
matrix[i][j] = matrix[j][i]
matrix[j][i] = temp
}
}
for (let i = 0; i < m; i++) {
let k = 0, j = m0 - 1
while (k < j) {
let temp = matrix[i][k]
matrix[i][k] = matrix[i][j]
matrix[i][j] = temp
k++
j--
}
}
return matrix
}
const spiralMatrix = (matrix) => {
const result = [];
let top = 0, bottom = matrix.length - 1, left = 0, right = matrix[0].length - 1;
while (top <= bottom && left <= right) {
// Traverse from left to right
for (let i = left; i <= right; i++) {
result.push(matrix[top][i]);
}
top++;
// Traverse downwards
for (let i = top; i <= bottom; i++) {
result.push(matrix[i][right]);
}
right--;
if (top <= bottom) {
// Traverse from right to left
for (let i = right; i >= left; i--) {
result.push(matrix[bottom][i]);
}
bottom--;
}
if (left <= right) {
// Traverse upwards
for (let i = bottom; i >= top; i--) {
result.push(matrix[i][left]);
}
left++;
}
}
return result;
}