Leetcode初学——螺旋矩阵||

题目:

分析:

这道题的主要难点在于如何去进行螺旋

我们可以设各边界的值l,t,r,b (left,top,right,botton)

从第t行的左端开始遍历,直到第t行右端

t++;

再从第t行的末尾,往下,直到第b行的末尾

r--;

从第b行的末尾往第b行的左端

b--;

最后从第b行的第一个数到第t行的第一个数

l++;

如此循环,知道最后一个数等于n^2;

代码:

class Solution {
    public int[][] generateMatrix(int n) {
        int l = 0, r = n - 1, t = 0, b = n - 1;
        int[][] mat = new int[n][n];
        int num = 1, tar = n * n;
        while(num <= tar){
            //从左到右
            for(int i = l; i <= r; i++) 
                mat[t][i] = num++;
            t++;
            //从上到下
            for(int i = t; i <= b; i++) 
                mat[i][r] = num++; 
            r--;
            //从右到左
            for(int i = r; i >= l; i--) 
                mat[b][i] = num++; 
            b--;
            //从下到上
            for(int i = b; i >= t; i--) 
                mat[i][l] = num++; 
            l++;
        }
        return mat;
    }
}

结果:

发布了57 篇原创文章 · 获赞 3 · 访问量 1056

猜你喜欢

转载自blog.csdn.net/qq_39377543/article/details/104252602