题解 | #顺时针打印矩阵#

顺时针打印矩阵

http://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a

//只需要两个变量循环打印就是了,打印一圈过后就需要调整打印的边界和起始点
import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> printMatrix(int [][] matrix) {
        ArrayList<Integer> res=new ArrayList<>();
         int n,m;
      
        n=matrix.length;
        m=matrix[0].length;
        //x,y表示打印起始位置
        int x=0;
        int y=0;
      //count表示循环的圈数
        int count=0;
      //sum和all是用来结束循环的,我没有计算打印的圈数,而是统计打印的个数,肯定时间复杂度要高一点
        int sum=0;
        int all=n*m;
        
        while(1==1){
            //表示当前打印的圈数
             x=count;
             y=count;
          //打印横着的第一行
             for(;y<m;y++){
                res.add(matrix[x][y]);
                 sum++;
             }
            
             if(sum>=all)
                break;
            //打印竖立的最后一行,y-=1是因为前面for循环多加了一个1.
             x+=1;y-=1;
             for(;x<n;x++){
                 res.add(matrix[x][y]);
                 sum++;
             }
            
            if(sum>=all)
                break;
            
             y-=1;x-=1;
             for(;y>=count;y--){
                 res.add(matrix[x][y]);
                 sum++;
             }
            
            if(sum>=all)
                break;
             x-=1;y+=1;
            
            //这里打印的圈数加一
             count++;
             for (;x>=count;x--){
                 res.add(matrix[x][y]);
                 sum++;
             }
            if(sum>=all)
                break;
          //调整下一圈打印的边界
             m--;n--;
        }
return res;
    }
}
全部评论
不错,很nice
1 回复 分享
发布于 2021-10-09 12:03

相关推荐

11-13 10:17
门头沟学院 Java
昨天面美团,jvm,juc问的好深啊,感觉小林coding不太够喔,牛油们有没有什么推荐的八股网站嘛🕒&nbsp;岗位/面试时间👥&nbsp;面试题目🤔&nbsp;面试感受
明天不下雨了:小林Coding:https://xiaolincoding.com/ 全栈哥:https://www.pdai.tech/ Guide哥:https://javaguide.cn/ 秀哥:https://interviewguide.cn/ 沉默王二:https://javabetter.cn/home.html 磊哥:https://www.javacn.site/interview/basic/ 小傅哥:https://bugstack.cn/ 源码哥:https://doocs.github.io/source-code-hunter/#/ 各大厂的公众号技术文章和一些经典的书籍
面试太紧张了怎么办?
点赞 评论 收藏
分享
09-29 15:34
已编辑
北京航空航天大学 C++
做个有文化的流氓:结果是好的,过程不重要,而且你的offer太多了
软开人,秋招你打算投哪些...
点赞 评论 收藏
分享
10-17 23:18
已编辑
西北农林科技大学 Web前端
独行m:给25可以试试,但他只能给12,那就是纯纯的事精
秋招,不懂就问
点赞 评论 收藏
分享
评论
1
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务