You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中将矩阵顺时针旋转一个元素?代码调试求助

矩阵顺时针旋转一位:代码检查与输出优化

首先,你的旋转逻辑是完全正确的!经过测试,rotateMatrix函数确实能把目标3x3矩阵转换成你期望的结果。问题主要出在输出格式的可读性上,我们可以调整一下打印方式让结果更直观,同时优化代码细节让它更健壮。

代码优化与输出调整

你的核心旋转逻辑没问题,我做了两处小改进:

  1. 让maxCol的初始化兼容非方阵(不影响你当前的3x3需求);
  2. 优化输出格式,把逗号分隔的字符串改成空格分隔的矩阵样式,让结果一目了然。

修正后的完整代码如下:

var matrix = [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ];

function rotateMatrix(matrix) {
    // 边界索引标记
    let maxRow = matrix.length - 1;
    let maxCol = matrix[0].length - 1; // 兼容非方阵,适配更通用场景
    let row = 0;
    let col = 0;

    // 按层处理矩阵的每一个环
    while (row < maxRow && col < maxCol) {
        // 初始值取当前环左下角的元素(对应你提到的4)
        let previous = matrix[row + 1][col];

        // 处理顶部行:从左到右替换元素
        for (let i = col; i <= maxCol; i++) {
            let current = matrix[row][i];
            matrix[row][i] = previous;
            previous = current;
        }
        row++; // 下移一行,进入右侧列处理

        // 处理右侧列:从上到下替换元素
        for (let j = row; j <= maxRow; j++) {
            let current = matrix[j][maxCol];
            matrix[j][maxCol] = previous;
            previous = current;
        }
        maxCol--; // 左移一列,进入底部行处理

        // 处理底部行:从右到左替换元素
        for (let j = maxCol; j >= col; j--) {
            let current = matrix[maxRow][j];
            matrix[maxRow][j] = previous;
            previous = current;
        }
        maxRow--; // 上移一行,进入左侧列处理

        // 处理左侧列:从下到上替换元素
        for (let i = maxRow; i >= row; i--) {
            let current = matrix[i][col];
            matrix[i][col] = previous;
            previous = current;
        }
        col++; // 右移一列,准备处理下一层环(如果存在)
    }
}

// 打印原始矩阵,用空格分隔更像矩阵样式
console.log("原始矩阵:");
matrix.forEach(row => console.log(row.join(' ')));

// 执行旋转操作
rotateMatrix(matrix);

// 打印旋转后的矩阵,换行分隔更清晰
console.log("\n旋转后的矩阵:");
matrix.forEach(row => console.log(row.join(' ')));

最终输出效果

运行代码后,控制台会输出清晰的矩阵格式:

原始矩阵:
1 2 3
4 5 6
7 8 9

旋转后的矩阵:
4 1 2
7 5 3
8 9 6

完全匹配你期望的转换效果!如果后续需要处理更大的方阵(比如4x4),这个代码逻辑也能正常工作,因为它是按层处理每个环的元素。

内容的提问来源于stack exchange,提问作者Valiant Lupori Buzzactaxe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 19:58:11