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

题目描述:

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

代码如下:

function PrintMatrix(n){  
    let result = [];
    let number = 1;
    let start = 0;
    // 生成一个NxN空矩阵
    for(let i = 0;  i < n; i++){
        result.push([]);
        for(let j = 0;  j < n; j++){
            result[i].push();
        }
    }    
    while(n > start*2){
        let end = n - 1 - start;
        // 从左往右打印
        for(let i = start; i <= end; i++){
            result[start][i] = number;
            number++;
        }
        // 从上往下打印
        if(start < end){
            for(let i = start + 1; i <= end; i++){
                result[i][end] = number;
                number++;   
            } 
        }
        // 从右往左打印
        if(start < n){
            for(let i = end - 1; i >= start; i--){
                result[end][i] = number;
                number++;   
            }
        }
        // 从下往上打印
        if(start < n-1){
            for(let i = end - 1 ; i >= start + 1; i--){
                result[i][start] = number;
                number++;   
            }
        }
        start++;
    }
    return result;
}
console.log(PrintMatrix(7))

END

猜你喜欢

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