题解 | #顺时针打印矩阵# 找规律 循环 右下左上

顺时针打印矩阵

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

import java.util.*;
import java.util.ArrayList;
public class Solution {
    public static ArrayList<Integer> printMatrix(int[][] matrix) {
        ArrayList<Integer> result = new ArrayList<>();
        if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
            return result;
        }
        //横向步数
        int lateral = matrix[0].length;
        //纵向步数
        int vertical = matrix.length - 1;
        //当前坐标
        int x = 0, y = -1;
        int num = lateral * (vertical + 1);
        while (result.size() != num) {
            //向右
            for (int i = 0; i < lateral; i++) {
                if (result.size() == num) {
                    break;
                }
                result.add(matrix[x][++y]);
            }
            lateral--;
            //向下
            for (int i = 0; i < vertical; i++) {
                if (result.size() == num) {
                    break;
                }
                result.add(matrix[++x][y]);
            }
            vertical--;
            //向左
            for (int i = 0; i < lateral; i++) {
                if (result.size() == num) {
                    break;
                }
                result.add(matrix[x][--y]);
            }
            lateral--;
            //向上
            for (int i = 0; i < vertical; i++) {
                if (result.size() == num) {
                    break;
                }
                result.add(matrix[--x][y]);
            }
            vertical--;
        }
        return result;
    }
}

全部评论

相关推荐

程序员小假:人才
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务