48.旋转图像
链接:48.旋转图像
难度:Medium
标签:数组、数学、矩阵
简介:给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。
题解 1 - typescript
- 编辑时间:2020-12-19
- 执行用时:84ms
- 内存消耗:40.3MB
- 编程语言:typescript
- 解法介绍:利用新数组储存。
function rotate(matrix: number[][]): void {
  const n = matrix.length;
  const arr: number[][] = [];
  for (let i = 0; i < n; i++) {
    const row: number[] = [];
    for (let j = n - 1; j >= 0; j--) {
      row.push(matrix[j][i]);
    }
    arr.push(row);
  }
  for (let i = 0; i < n; i++) matrix[i] = arr[i];
}
题解 2 - typescript
- 编辑时间:2020-12-19
- 执行用时:80ms
- 内存消耗:41.5MB
- 编程语言:typescript
- 解法介绍:利用两次翻转代替旋转。
function rotate(matrix: number[][]): void {
  const n = matrix.length;
  // 水平翻转
  for (let i = 0, max = n / 2; i < max; i++) {
    for (let j = 0; j < n; j++) {
      [matrix[i][j], matrix[n - i - 1][j]] = [matrix[n - i - 1][j], matrix[i][j]];
    }
  }
  // 主对角线翻转
  for (let i = 0; i < n; i++) {
    for (let j = 0; j < i; j++) {
      [matrix[i][j], matrix[j][i]] = [matrix[j][i], matrix[i][j]];
    }
  }
}