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

顺时针打印矩阵

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

按圈打印

public class Solution {
    public ArrayList<Integer> printMatrix(int [][] matrix) {
       ArrayList<Integer> arraylist = new ArrayList();
        int lx = 0 , ly = 0;
        int rx = matrix.length -1;
        int ry = matrix[0].length -1;
       while(lx <= rx && ly <= ry ){
           addToArray(lx++,ly++,rx--,ry--,matrix,arraylist);
       }
        return arraylist;
    }
    
    public void addToArray(int lx,int ly ,int rx,int ry ,int[][] matrix,ArrayList<Integer> arraylist){
        for(int j  = ly ; j <= ry ; j++){
            arraylist.add(matrix[lx][j]);
        }
        for(int i = lx+1 ; i <= rx ; i++){
            arraylist.add(matrix[i][ry]);
        }
        //判断列数或者是行数确保不为1
        int h = rx - lx + 1;
        int w = ry - ly + 1;
        if(h > 1){
            for (int rj = ry-1; rj >= ly ;rj--){
               arraylist.add(matrix[rx][rj]); 
            }
        }
        if(w > 1){
            for(int li = rx - 1; li >=lx+1; li--){
                arraylist.add(matrix[li][ly]);
            }
        }
        
    }
}
全部评论

相关推荐

02-22 21:16
已编辑
门头沟学院 运营
牛客928043833号:离了你谁还拿我当个宝
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务