JZ19:顺时针打印矩阵

顺时针打印矩阵

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

图片说明

import java.util.ArrayList;
public class Solution {
    public static  ArrayList<Integer> printClockwiseMatrix(int[][] matrix){
        int sL=0;
        int sR=0;//第一个点(sL,sR)
        int eL=matrix.length-1;
        int eR=matrix[0].length-1;//最后一个点(eL,eR)
        //递归
        ArrayList<Integer> list=new ArrayList<Integer>();
        while(sL<=eL && sR<=eR){
            list=printEdge(matrix,sL++,sR++,eL--,eR--,list);
        }
        return list;
    }

    public static ArrayList<Integer> printEdge(int[][] matrix,int sL,int sR,int eL,int eR,ArrayList<Integer> list){
        if(sL==eL){//只有一行
            for(int i=sR;i<=eR;i++){
                list.add(matrix[sL][i]);
            }
        }
        else if(sR==eR){//只有一列
            for(int i=sL;i<=eL;i++){
                list.add(matrix[i][sR]);
            }
        }
        else{
            int curL=sL;
            int curR=sR;
            while(curR!=eR){//打印1, 2, 3
                list.add(matrix[sL][curR]);
                curR++;
            }
            while(curL!=eL){//打印4, 8, 12,
                list.add(matrix[curL][eR]);
                curL++;
            }
            while(curR!=sR){//打印16, 15, 14, 
                list.add(matrix[eL][curR]);
                curR--;
            }
            while(curL!=sL){//打印13, 9, 5 
                list.add(matrix[curL][sR]);
                curL--;
            }
        }
        return list;
    }
}
剑指Offer题解 文章被收录于专栏

剑指Offer-Java版本题解

全部评论

相关推荐

10-23 16:33
门头沟学院 Java
本人某中9本科,成绩中等,目前没科研没实习,目前后端学到了javaWeb,开始没定好方向,在学国外课程,走工程路线起步有点晚了,到这个时间点了还在学JavaWeb,顿感迷茫,不知道是坚持走下去还是寒假去准备考研。考研这个路弄得我还是心痒痒的,因为从众考研的人也不在少数,所以会有这方面的心理安慰吧,就是“不行我可以去考研啊”,而且意味着三年的缓冲,为了复试还有积攒经验美化简历,其实现在也可以去申入实验室打杂;就业可能意味着多些工作经验,工程岗应该到后面还是经验大于学历?还是有点迷茫了,求助好心人有无路线启发
千千倩倩:同27给点建议,现在这个时间点可以快速看完外卖和点评,不用跟着敲,但一定要在看的时候总结每个部分的整个业务流程,对其中的实现有一个大概的印象。然后直接开始看八股,刷算法。八股和算法最好还是在项目学习中穿插着看。如果计算机基础,算法这些基础好,加上每天刻苦学习,两周可以达到勉强能面试的水平,到时候就直接海投中小厂,在约面和面试的过程中不断巩固知识。没找到实习也没关系,就当积累经验。再沉淀一波直接明年三月开始投暑期,毕竟是9本,总是有面试机会的,只要你这三个月不懈怠,面试发挥得一定不错,只要拿到一个中,大厂暑期实习,秋招就有竞争力了。总得而言,现在还有机会,但是时间非常紧张,需要你结合自己情况考虑,共勉
你会选择考研还是直接就业
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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