顺时针打印矩阵
题目
描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵:
[[1,2,3,4],
[5,6,7,8],
[9,10,11,12],
[13,14,15,16]]
则依次打印出数字
[1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10]
数据范围:
0 <= matrix.length <= 100
0 <= matrix[i].length <= 100
牛客题目链接
思路
代码实现
private ArrayList<Integer> result = new ArrayList<>();
public ArrayList<Integer> printMatrix(int[][] matrix) {
if (matrix == null || matrix[0] == null || matrix[0].length == 0) {
return result;
}
int tR = 0; //表示第一行下标
int tC = 0; //表示第一列下标
int index = 0; //表示当前集合下标
int dR = matrix.length - 1; //最后一行下标
int dC = matrix[0].length - 1; //最后一列下标
while (tR <= dR && tC <= dC) {
printMatrix(matrix, tR++, tC++, dR--, dC--, index); //不断往中间靠拢
}
return result;
}
private void printMatrix(int[][] matrix, int tR, int tC, int dR, int dC, int index) {
if (tR == dR) {
//只有一行的情况
for (int i = dR; i <= dC; i++) {
result.add(matrix[tR][i]);
}
} else if (tC == dC) {
//只有一列的情况
for (int i = tR; i <= dR; i++) {
result.add(matrix[i][tC]);
}
} else {
//遵守矩阵打印规则
int curR = tR;
int curC = tC;
while (curC != dC) {
result.add(matrix[curR][curC]);
curC++;
}
while (curR != dR) {
result.add(matrix[curR][curC]);
curR++;
}
while (curC != tC) {
result.add(matrix[curR][curC]);
curC--;
}
while (curR != tR) {
result.add(matrix[curR][curC]);
curR--;
}
}
}
原文地址:https://blog.csdn.net/a734474820/article/details/134707279
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_11977.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。