
关注
如何实现顺时针旋转矩阵?
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
相关推荐
05-27 16:58
西安电子科技大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你被哪些公司秒挂过? #
10002次浏览 123人参与
# 26届的你们有几段实习? #
3852次浏览 78人参与
# 如何提高实习转正率? #
5352次浏览 103人参与
# 第一份工作应该只看薪资吗 #
153048次浏览 1534人参与
# 大厂面试初体验 #
14088次浏览 93人参与
# 你想留在一线还是回老家? #
49104次浏览 505人参与
# 你认为哪些项目算烂大街? #
3885次浏览 94人参与
# 你以为的实习VS真实的实习 #
4846次浏览 74人参与
# 选完offer后,你后悔学本专业吗 #
47953次浏览 239人参与
# 离家近房租贵VS离家远但房租低,怎么选 #
9650次浏览 119人参与
# 你后悔自己读研吗? #
4592次浏览 122人参与
# 最难的技术面是哪家公司? #
3039次浏览 36人参与
# 拼多多工作体验 #
29508次浏览 201人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
114066次浏览 793人参与
# 月薪多少能在一线城市生存 #
5565次浏览 111人参与
# leader认为你工作不认真怎么办 #
32172次浏览 151人参与
# 如果可以,你希望哪个公司来捞你 #
104814次浏览 509人参与
# 如果公司降薪,你会跳槽吗? #
80169次浏览 588人参与
# 妈妈治愈了你哪些脆皮时刻 #
29466次浏览 321人参与
# 如果公司给你放一天假,你会怎么度过? #
17738次浏览 129人参与