0模拟/数组中等 LeetCode59. 螺旋矩阵 II NC210 螺旋矩阵(二)

59. 螺旋矩阵 II

描述

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。

分析

模拟螺旋遍历数组,和54. 螺旋矩阵是一样的。
设定上下左右的边界变量,按照上行、右列、下行、左列的顺序遍历数组。
每遍历一次,对相应的行、列边界变量缩进一次,直到最后up大于down,left大于right。

class Solution {
    public int[][] generateMatrix(int n) {
        int num = 1;
        int[][] ans = new int[n][n];
        int left = 0, right = n-1, up = 0, down = n-1;
        while(left <= right && up <= down){
            for(int i = left; i <= right; i++){
                ans[up][i] = num++;
            }
            up++;
            for(int i = up; i <= down; i++){
                ans[i][right] = num++;
            }
            right--;
            for(int i = right; i >= left; i--){
                ans[down][i] = num++;
            }
            down--;
            for(int i = down; i >= up; i--){
                ans[i][left] = num++;
            }
            left++;
        }
        return ans;
    }
}

你可能感兴趣的:(矩阵,线性代数,leetcode)