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

二维矩阵按圈从最外层圈进行往内层遍历

function printMatrix(matrix)
{
    // write code here
    //最终返回的数组
    let resArr = []
    let row = matrix.length
    let column = matrix[0].length
    //定义左、上、右、下的打印范围
    let left = 0
    let right = column - 1
    let top = 0
    let bottom = row - 1
    while(left <= right && top <= bottom) {
        //从左到右
        for(let i = left; i <= right; i++) {
            resArr.push(matrix[top][i])
        }
        //从上到下,i从top+1开始,避免与之前遍历元素重复
        for (let i = top + 1; i <= bottom; i++) {
            resArr.push(matrix[i][right])
        }
        //需满足上不等于下时才能够接着遍历右到左边的元素
        if(top !== bottom) {
            //从右到左
            for (let i = right -1; i >= left; i--) {
            resArr.push(matrix[bottom][i])
            }
        }
        if(left !== right){
            //从下到上
            for (let i = bottom - 1; i > top; i--) {
                resArr.push(matrix[i][left])
            }
        }
        
        //遍历矩阵一圈后,就让左右上下索引改变
        left ++
        right --
        top ++
        bottom --
    }
    console.log(resArr)
    return resArr
}
module.exports = {
    printMatrix : printMatrix
};
全部评论

相关推荐

换了个部门,每天有很多问题请教一位同事,她都很耐心,想表示感谢,送点啥给她呢,她也也不喝奶茶。一小束花二三十块的那种可以嘛?
只只颂:我是女生,我觉得你可以送盆好看的多肉植物,或者送个漂亮的小蛋糕(即使她不爱吃蛋糕,应该也会喜欢。因为我就是这样)
点赞 评论 收藏
分享
过往烟沉:我说什么来着,java就业面就是广!
点赞 评论 收藏
分享
牛客977679609号:感觉你会的东西还挺多的但简历一般都不这样写,建议只写一页,教育经历只留学校,导师单位啥的全去了,作品展示和自我评价都去了,科研成果写在所获荣誉里,项目保留,浓缩成一页。
点赞 评论 收藏
分享
秋招0&nbsp;offer是不是费了。
想要offer啊啊啊啊啊啊:0offer+1,十一月份加油
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务