0
点赞
收藏
分享

微信扫一扫

leetcode 418. 屏幕旋转

问题描述

给定一个二维二进制矩阵表示的屏幕,当旋转屏幕时,从左下角开始,在顺时针旋转k个90度。

示例 1: 输入: matrix = [[1,2,3],[4,5,6],[7,8,9]], k = 1 输出: [[7,4,1],[8,5,2],[9,6,3]]

示例 2: 输入: matrix = [[5,1,9],[11,18,13],[19,6,7]], k = 4 输出: [[5,1,9],[11,18,13],[19,6,7]]

注意:

  1. 矩阵的行数为n,n <= 10且n >= 1。
  2. 矩阵的列数为m,m <= 10且m >= 1。
  3. 0 <= matrix[i][j] <= 1。
  4. k % 90为旋转的度数。

解法一

解题思路:

我们可以通过转置矩阵然后翻转行来实现旋转屏幕的效果。具体步骤如下:

  1. 转置矩阵。
  2. 翻转矩阵的每一行。
  3. 重复上述步骤k次。
/*
 * @lc app=leetcode.cn id=418 lang=javascript
 *
 * [418] 屏幕旋转
 */

// @lc code=start
function rotate(matrix, k) {
    for (let i = 0; i < k; i++) {
        // 转置矩阵
        for (let i = 0; i < matrix.length; i++) {
            for (let j = i; j < matrix[0].length; j++) {
                let temp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = temp;
            }
        }
        // 翻转矩阵的每一行
        for (let i = 0; i < matrix.length; i++) {
            for (let j = 0; j < Math.floor(matrix[0].length / 2); j++) {
                let temp = matrix[i][j];
                matrix[i][j] = matrix[i][matrix[0].length - 1 - j];
                matrix[i][matrix[0].length - 1 - j] = temp;
            }
        }
    }
}
// @lc code=end
举报

相关推荐

0 条评论