题解 | #顺时针打印矩阵#

顺时针打印矩阵

https://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a

function printMatrix(matrix) {
    let res = [];
    if (!matrix.length) return res;
    // 定义上下左右边界
    let left = 0;
    let right = matrix[0].length - 1;
    let up = 0;
    let down = matrix.length - 1;
    while (left <= right && up <= down) {
        // 上边界从左到右加入到结果数组中
        for (let i = left; i <= right; i++) {
            res.push(matrix[up][i]);
        }
        // 上边界下移
        up++;
        if(up > down){
            break;
        }
        // 右边界从上向下加入结果
        for(let i = up; i <= down; i++){
            res.push(matrix[i][right]);
        }
        // 右边界左移
        right--;
        if(left > right){
            break;
        }
        // 下边界从右向左加入
        for(let i = right; i >= left; i--){
            res.push(matrix[down][i]);
        }
        // 下边界上移
        down--;
        if(up > down){
            break;
        }
        // 左边界从下向上加入
        for(let i = down; i >= up; i--){
            res.push(matrix[i][left]);
        }
        left++;
        if(left > right){
            break;
        }
    }
    return res;
}
module.exports = {
    printMatrix: printMatrix,
};

全部评论

相关推荐

昨天 17:59
已编辑
长江大学 Java
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务