例如,给定以下二维数组:
1 2 3
4 5 6
7 8 9
旋转后的结果为:
7 4 1
8 5 2
9 6 3
请编写一个函数,实现该功能。
2. 解题思路:可以先将二维数组转置,然后再将每一行逆序即可。
3. 代码实现:
```python
def rotate(matrix):
n = len(matrix)
# 转置矩阵
for i in range(n):
for j in range(i, n):
matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
# 逆序每一行
for i in range(n):
matrix[i] = matrix[i][::-1]
return matrix
```
4. 测试样例:
```python
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(rotate(matrix)) # [[7, 4, 1], [8, 5, 2], [9, 6, 3]]
```

5. 时间复杂度分析:转置矩阵的时间复杂度为O(n^2),逆序每一行的时间复杂度也为O(n^2),因此总的时间复杂度为O(n^2)。
6. 空间复杂度分析:由于是在原数组上进行操作,因此空间复杂度为O(1)。
7. 注意事项:在进行矩阵转置时,需要注意只需要遍历矩阵的上三角或下三角即可,否则会重复交换元素。
