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

顺时针打印矩阵

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

import java.util.*;
import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> printMatrix(int[][] matrix) {
        ArrayList<Integer> ans = new ArrayList<>();
        if (matrix.length == 0 || matrix[0].length == 0) return ans;

        int m = matrix.length, n = matrix[0].length;
        int l = 0, r = n - 1;
        int t = 0, b = m - 1;
        while (true) {
            // l -> r
            for(int j = l; j <= r; j++) ans.add(matrix[t][j]);
            if(++t > b) break;

            // t -> b
            for(int i = t; i <= b; i++) ans.add(matrix[i][r]);
            if(--r < l) break;

            // r -> l
            for(int j = r; j >= l; j--) ans.add(matrix[b][j]);
            if(--b < t) break;

            // b -> t
            for(int i = b; i >= t; i--) ans.add(matrix[i][l]);
            if(++l > r) break;
        }
        return ans;
    }
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务