
关注
如何实现顺时针旋转矩阵?
package chapter_8_arrayandmatrix;
public class Problem_01_PrintMatrixSpiralOrder {
public static void spiralOrderPrint(int[][] matrix) {
int tR = 0;
int tC = 0;
int dR = matrix.length - 1;
int dC = matrix[0].length - 1;
while (tR <= dR && tC <= dC) {
printEdge(matrix, tR++, tC++, dR--, dC--);
}
}
public static void printEdge(int[][] m, int tR, int tC, int dR, int dC) {
if (tR == dR) { // 子矩阵只有一行时
for (int i = tC; i <= dC; i++) {
System.out.print(m[tR][i] + " ");
}
} else if (tC == dC) { // 子矩阵只有一列时
for (int i = tR; i <= dR; i++) {
System.out.print(m[i][tC] + " ");
}
} else { // 一般情况
int curC = tC;
int curR = tR;
while (curC != dC) {
System.out.print(m[tR][curC] + " ");
curC++;
}
while (curR != dR) {
System.out.print(m[curR][dC] + " ");
curR++;
}
while (curC != tC) {
System.out.print(m[dR][curC] + " ");
curC--;
}
while (curR != tR) {
System.out.print(m[curR][tC] + " ");
curR--;
}
}
}
public static void main(String[] args) {
int[][] matrix = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 },
{ 13, 14, 15, 16 } };
spiralOrderPrint(matrix);
}
}
查看原帖
点赞 1
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 面试问题记录 #
76445次浏览 1068人参与
# 工作中,你有没有遇到非常爱骂人的领导? #
21447次浏览 148人参与
# 京东TGT #
55333次浏览 188人参与
# 上班到公司第一件事做什么? #
41933次浏览 387人参与
# 硬件人的简历怎么写 #
258681次浏览 2904人参与
# 求职季如何保持心态不崩 #
108675次浏览 890人参与
# 找工作的破防时刻 #
3205次浏览 41人参与
# 工作时那些社死瞬间 #
27071次浏览 199人参与
# 拼多多工作体验 #
18703次浏览 153人参与
# 互联网行业现在还值得去吗 #
8218次浏览 42人参与
# 技术转行的心路历程 #
49337次浏览 665人参与
# 选完offer后,你后悔学本专业吗 #
39683次浏览 219人参与
# 你觉得技术面多长时间合理? #
88117次浏览 647人参与
# 国企和大厂硬件兄弟怎么选? #
121849次浏览 1657人参与
# 你遇到过哪些神仙同事 #
76458次浏览 668人参与
# 安利/避雷我的专业 #
67954次浏览 499人参与
# 面试经验谈 #
52752次浏览 838人参与
# 实习生应该准时下班吗 #
204720次浏览 1330人参与
# 米哈游求职进展汇总 #
324058次浏览 2224人参与
# 面试吐槽bot #
19608次浏览 109人参与
# 工作一周年分享 #
21039次浏览 113人参与