zoukankan      html  css  js  c++  java
  • 刷题67——旋转矩阵

    106.旋转矩阵

    题目链接

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/rotate-matrix-lcci

    题目描述

    给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。

    不占用额外内存空间能否做到?

    示例 1:

    给定 matrix =
    [
    [1,2,3],
    [4,5,6],
    [7,8,9]
    ],

    原地旋转输入矩阵,使其变为:
    [
    [7,4,1],
    [8,5,2],
    [9,6,3]
    ]
    示例 2:

    给定 matrix =
    [
    [ 5, 1, 9,11],
    [ 2, 4, 8,10],
    [13, 3, 6, 7],
    [15,14,12,16]
    ],

    原地旋转输入矩阵,使其变为:
    [
    [15,13, 2, 5],
    [14, 3, 4, 1],
    [12, 6, 8, 9],
    [16, 7,10,11]
    ]

    重难点

    1. 分析矩阵旋转规律;
    2. 解构赋值;

    题目分析

    1. 矩阵旋转90°以后,以示例1 为例:原来的第1行变为第3列,原来的第2行变为第2列,原来的第3行变为第1列;即:矩阵中第i行的第j个元素,在旋转后,它出现在倒数第i列的第j个位置。
    2. 使用解构赋值实现矩阵中第i行的第j个元素和矩阵中第j行的第i个元素互换位置。
    3. 使用reverse()翻转每一行元素。
    /**
     * @param {number[][]} matrix
     * @return {void} Do not return anything, modify matrix in-place instead.
     */
    var rotate = function(matrix) {
        for(let i=0;i<matrix.length;i++){
           for(let j=i;j<matrix[i].length;j++){
               [matrix[i][j],matrix[j][i]] =  [matrix[j][i],matrix[i][j]];
           } 
        }
        matrix.forEach(row=>row.reverse());
    };
    

      

  • 相关阅读:
    每天都感觉很疲劳
    如果你决定要自己营销
    昨天忘记写日记了,今天补充一下!
    终于不用再去北仑了
    良好的程序架构
    最近的天气反复无常
    就这么着
    C# Socket 入门3 UPD
    让程序只启动一次 Mutex
    C# Socket 入门2
  • 原文地址:https://www.cnblogs.com/liu-xin1995/p/12654691.html
Copyright © 2011-2022 走看看