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

顺时针打印矩阵

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

import java.util.ArrayList;
public class Solution {
    
    ArrayList<Integer> res = new ArrayList<>();
    
    public ArrayList<Integer> printMatrix(int [][] matrix) {
        
        int x1 = 0;
        int y1 = 0;
        int x2 = matrix.length - 1;
        int y2 = matrix[0].length - 1;
        while (x1 <= x2 && y1 <= y2) {
            process(matrix, x1++, y1++, x2--, y2--);
        }
        return res;
    }
    
    public void process(int[][] matrix, int x1, int y1, int x2, int y2) {
        if (x1 == x2) {
            for (int i = y1; i <= y2; i++) {
                res.add(matrix[x1][i]);
            }
        }
        else if (y1 == y2) {
            for (int i = x1; i <= x2; i++) {
                res.add(matrix[i][y1]);
            }
        }
        else {
            int currentx = x1;
            int currenty = y1;
            while (currenty != y2) {
                res.add(matrix[x1][currenty]);
                currenty++;
            }
            while (currentx != x2) {
                res.add(matrix[currentx][y2]);
                currentx++;
            }
            while (currenty != y1) {
                res.add(matrix[x2][currenty]);
                currenty--;
            }
            while (currentx != x1) {
                res.add(matrix[currentx][y1]);
                currentx--;
            }
        }
    }
}
全部评论

相关推荐

大野鸡:其实就是量,但是时间有限,1000题只要不是全中等简单,简单中等困难1-2-1,大概能打打比赛了(前20%),10000题就是下一个灵神
点赞 评论 收藏
分享
10-03 17:08
已编辑
西安电子科技大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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