0%

LeetCode-48

题目

结果

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
public void rotate(int[][] matrix) {
int n = matrix.length;

// Transposed matrix
for (int i = 0; i < n; i++) {
for (int j = i; j < n; j++) {
int tmp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = tmp;
}
}

// Reverse each line
for (int i = 0; i < n; i++) {
for (int j = 0; j < n / 2; j++) {
int tmp = matrix[i][j];
matrix[i][j] = matrix[i][n - j - 1];
matrix[i][n - j - 1] = tmp;
}
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
func rotate(matrix [][]int) {
length := len(matrix)
// 转置矩阵
for i := 0; i < length; i++ {
for j := i; j < length; j++ {
swap(matrix, i, j, j, i)
}
}
// 翻转每一行
for i := 0; i < length; i++ {
for j := 0; j < length/2; j++ {
swap(matrix, i, j, i, length-1-j)
}
}
}

func swap(matrix [][]int, i1 int, j1 int, i2 int, j2 int) {
tmp := matrix[i1][j1]
matrix[i1][j1] = matrix[i2][j2]
matrix[i2][j2] = tmp
}

复杂度

时间复杂度:O(n²)

空间复杂度:O(1),原地排序