讲一个数组旋转90度
时间: 2023-09-02 07:09:31 浏览: 107
数组旋转90度是一个常见的问题,可以通过以下步骤实现:
1. 将数组沿着对角线翻转,即先把第 i 行和第 i 列交换,其中 i 为数组长度的一半。
2. 将数组沿着中心竖直线翻转,即将第 i 列和第 n-i-1 列交换,其中 n 为数组长度。
下面是具体的实现代码(假设数组为 n x n 的二维数组):
```
void rotate(int** matrix, int matrixSize, int* matrixColSize){
// Step 1: 沿对角线翻转
for (int i = 0; i < matrixSize; i++) {
for (int j = i; j < matrixSize; j++) {
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
// Step 2: 沿竖直中心线翻转
for (int i = 0; i < matrixSize; i++) {
for (int j = 0; j < matrixSize / 2; j++) {
int temp = matrix[i][j];
matrix[i][j] = matrix[i][matrixSize - j - 1];
matrix[i][matrixSize - j - 1] = temp;
}
}
}
```
这个算法的时间复杂度为 O(n^2),空间复杂度为 O(1)。
阅读全文