1.题目
给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。
image.png提示:
n == matrix.length == matrix[i].length
1 <= n <= 20
-1000 <= matrix[i][j] <= 1000
2.思路
- 使用辅助数组
- 原数组的列等于转变后新数组的行
- 原数组的行等于转变后新数组的列(数组的长度-i)
3.代码
object Solution {
def rotate(matrix: Array[Array[Int]]): Unit = {
val array: Array[Array[Int]] = Array.ofDim[Int](matrix.length,matrix.length)
for (i<-0 until matrix.length){
for(j<-0 until matrix.length){
array(j)(matrix.length-i-1) = matrix(i)(j)
}
}
for (i<-0 until matrix.length){
for(j<-0 until matrix.length){
matrix(i)(j) = array (i)(j)
}
}
// matrix.foreach(x=>x.foreach(println(_)))
}
}
4.复杂度
- 时间复杂度:O(N^2),其中 N 是 matrix 的边长。
- 空间复杂度:O(N^2),我们需要使用一个和 matrix 大小相同的辅助数组。
网友评论