码迷,mamicode.com
首页 > 其他好文 > 详细

剑指 Offer 29. 顺时针打印矩阵

时间:2021-03-18 14:39:28      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:没有   一个   打印   pre   有意思   --   break   while循环   bre   

这个题蛮有意思的。学习了大佬的思路。
注意边界情况,当输入空数组时,返回了一个匿名数组的写法。
以及保证数组不越界,及时退出循环的思路。
我原来写的while循环条件是(cnt<num),且没有写退出循环的四个判断,是有问题的。

class Solution {
   
    public int[] spiralOrder(int[][] matrix) {
        if(matrix.length==0) return new int[0];
        int l=0,r=matrix[0].length-1,u=0,d=matrix.length-1;
        int [] res=new int[matrix.length*matrix[0].length];
        int cnt=0;
        int num=matrix.length*matrix[0].length;
        while(true){
            for(int i=l;i<=r;i++)
                res[cnt++]=matrix[u][i];
            if(++u>d) break;

            for(int i=u;i<=d;i++)
                res[cnt++]=matrix[i][r];
            if(--r<l) break;

            for(int i=r;i>=l;i--)
               res[cnt++]=matrix[d][i];
            if(--d<u)break;
    
            for(int i=d;i>=u;i--)
               res[cnt++]=matrix[i][l];
            if(++l>r) break;
        }
         return res;
    }
}

剑指 Offer 29. 顺时针打印矩阵

标签:没有   一个   打印   pre   有意思   --   break   while循环   bre   

原文地址:https://www.cnblogs.com/wsshub/p/14553978.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!