与其明天开始,不如现在行动!
文章目录
- 旋转正方形矩阵
- 1 题目描述
- 2 解决思路
- 3 代码实现
- 💎总结
旋转正方形矩阵
1 题目描述
有一个n*n的矩阵,现在把整个矩阵顺时针旋转90°,如图:
2 解决思路
- 设置四个指针,分别在矩阵的四个角
- 先旋转最外层,然后逐渐旋转里层
- 四个角是一组,每次顺时针移位
3 代码实现
public class RotateMatrix {
public static void rotateMatrix(int[][] matrix) {
if (matrix == null) {
return;
}
// 定义四个角
int startRow = 0;
int startColumn = 0;
int endRow = matrix.length - 1;
int endColumn = matrix[0].length - 1;
// 每次循环都会向里走步层
while (startRow <= endRow) {
rotateEdge(matrix, startRow++, startColumn++, endRow--, endColumn--);
}
}
private static void rotateEdge(int[][] matrix, int startRow, int startColumn, int endRow, int endColumn) {
int temp = 0;
// 顺时针交换四个数据
for (int i = 0; i < endRow - startRow; i++) {
temp = matrix[startRow][startColumn + i];
matrix[startRow][startColumn + i] = matrix[endRow - i][startColumn];
matrix[endRow - i][startColumn] = matrix[endRow][endColumn - i];
matrix[endRow][endColumn - i] = matrix[startRow + i][endColumn];
matrix[startRow + i][endColumn] = temp;
}
}
public static void main(String[] args) {
int[][] matrix = new int[5][5];
int num = 1;
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
matrix[i][j] = num++;
}
}
rotateMatrix(matrix);
}
}
💎总结
本文中若是有出现的错误请在评论区或者私信指出,我再进行改正优化,如果文章对你有所帮助,请给博主一个宝贵的三连,感谢大家😘!!!