首页 > 其他 > 详细

59-螺旋矩阵2

时间:2020-02-29 01:47:25      阅读:56      评论:0      收藏:0      [点我收藏+]

今天学到了一种非常好的方法,虽然自己有想到按照右下左上四个方向去螺旋进行赋值,但是对于leetcode上大佬所讲解的用四周边界作为条件可以有效解决循环时候的边界问题,同时,用while循环判断的好处在于最后一个元素落到的位置和row=column的时候元素位置有很好的作用,减少bug的出现。(不得不感叹,真的好强嗷= =)

 

技术分享图片

 

技术分享图片
class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        vector<vector<int>> m(n,vector<int>(n,0)); 
        int num=1;
        int left=0,right=n-1,up=0,down=n-1;
        while(num<=n*n)
        {
            for(int i=left;i<=right;i++)       //从左到右依次赋值
            {
                m[up][i]=num++;
            }
            up++;                             //上面的行满了,所以顶要加一向下走
            for(int i=up;i<=down;i++)         //从右到下依次赋值
            {
                m[i][right]=num++;
            }
            right--;
            for(int i=right;i>=left;i--)      //从右到左
            {
                m[down][i]=num++;
            }
            down--;
            for(int i=down;i>=up;i--)         //从下到上
            {
                m[i][left]=num++;
            }
            left++;
            
        }
        return m;

    }
};
View Code

 

59-螺旋矩阵2

原文:https://www.cnblogs.com/nxnslc-blog/p/12380921.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!