算法JS:顺时针打印一个MxN矩阵

题目描述:

输入两个正整数M,N,输出一个MxN矩阵。示例如下:

代码如下:

function PrintMatrix(rows,columns){  
    let result = [];
    let number = 1;
    let start = 0;
    // 生成一个MxN空矩阵
    for(let i = 0;  i < rows; i++){
        result.push([]);
        for(let j = 0;  j < columns; j++){
            result[i].push();
        }
    }    
    while(rows > start*2 && columns > start*2){
        let endX = columns - 1 - start;
        let endY = rows - 1 - start;
        // 从左往右打印
        for(let i = start; i <= endX; i++){
            result[start][i] = number;
            number++;
        }
        // 从上往下打印
        if(start < endY){
            for(let i = start + 1; i <= endY; i++){
                result[i][endX] = number;
                number++;   
            } 
        }
        // 从右往左打印
        if(start < endX && start < endY){
            for(let i = endX - 1; i >= start; i--){
                result[endY][i] = number;
                number++;   
            }
        }
        // 从下往上打印
        if(start < endX && start < endY-1){
            for(let i = endY - 1 ; i >= start + 1; i--){
                result[i][start] = number;
                number++;   
            }
        }
        start++;
    }
    return result;
}
console.log(PrintMatrix(3,4))

END

猜你喜欢

转载自blog.csdn.net/Dora_5537/article/details/89360336