美文网首页
59. 螺旋矩阵 II

59. 螺旋矩阵 II

作者: 郭昊峰 | 来源:发表于2018-12-24 20:55 被阅读0次

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

    示例:

    输入:3

    输出:[ [ 1, 2, 3 ], 

               [ 8, 9, 4 ],

               [ 7, 6, 5 ]]

    这题还是有点绕的,最开始做主要容易忽略中间的[1][1] = 9 的赋值,思路:

    1:把一次→↓←↑的赋值看作一次循环,在值i<=n*n为真时,不断重复这个循环。

    2:在一次循环内,当完成←→赋值的时候,↑↓赋值的最大值减去1。↑↓同理。

    public class Solution {

        public int[,] GenerateMatrix(int n) {

            int[,] arr = new int[n,n];

                int num = 1;//赋值的值

                int col = n;//循环赋值时的纵向次数

                int row = n;//循环赋值时的横向次数

                int x = 0;//标记数组纵向

                int y = -1;//标记数组横向

                while (num <=n * n)

                {

                    for (int i = 0; i < row; i++)

                    {

                        arr[x,y=y+1] = num;

                        num++;

                    }

                    col--;

                    for (int i = 0; i < col; i++)

                    {

                        arr[x = x + 1, y] = num;

                        num++;

                    }

                    row--;

                    for (int i = 0; i < row; i++)

                    {

                        arr[x, y = y - 1] = num;

                        num++;

                    }

                    col--;

                    for (int i = 0; i < col; i++)

                    {

                        arr[x = x - 1, y] = num;

                        num++;

                    }

                    row--;

                }

                return arr;

        }

    }

    相关文章

      网友评论

          本文标题:59. 螺旋矩阵 II

          本文链接:https://www.haomeiwen.com/subject/airtlqtx.html