【刷算法】LeetCode.48-旋转图像

星屑
• 阅读 2739

题目描述

给定一个 n × n 的二维矩阵表示一个图像。

将图像顺时针旋转 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]
]

代码描述

/**
 * @param {number[][]} matrix
 * @return {void} Do not return anything, modify matrix in-place instead.
 */
var rotate = function(matrix) {
    if(matrix === null || matrix.length === 0 || matrix[0].length === 0)
        return matrix;
    
    let n = matrix.length-1;
    let curCol = n-1;
    
    for(let i = 0;i <= n;i++) {
        for(let j = 0;j <= curCol;j++) {
            let temp = matrix[i][j];
            matrix[i][j] = matrix[n-j][n-i];
            matrix[n-j][n-i] = temp;
        }
        curCol--;
    }
    
    for(let i = 0;i <= Math.floor(n/2);i++) {
        for(let j = 0;j <= n;j++) {
            let temp = matrix[i][j];
            matrix[i][j] = matrix[n-i][j];
            matrix[n-i][j] = temp;
        }
    }
}
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Karen110 Karen110
4年前
图像中查找小图像的方法
如果有一副大图像和该大图像中截取的部分小图像,用人眼很容易找到小图像在大图像中的位置,但如果想通过电脑自动查找怎么解决呢?有2种方法,一种是直接通过图像矩阵的数据内容匹配进行查找,在一个大矩阵中查找对应小矩阵,这是精确匹配,要求小矩阵的所有元素与大矩阵中某部分的所有元素完全一致;另外一种就是OpenCVPython的HMT(hitandmisstransf
Wesley13 Wesley13
3年前
ARM内核矩阵计算教程(STM32)
我们在嵌入式上跑矩阵运算时候,会遇到这样一个问题。假设将矩阵设置成N\N维的二维数组后,我们想求两个矩阵相乘,那就需要按照矩阵计算规则编写矩阵相乘函数,这样的话4\4矩阵得编一个,5\5矩阵又得编一个,要求逆还得编一个,求行列式还得编。自己写的函数代码效率容易低,将导致本来要跑在单片机上的算法,难达到想象计算速度。这篇教程将教会你如何使用a
Wesley13 Wesley13
3年前
Unity横屏
Android下发现Unity里面的Player设置,并不能完全有效,比如打开了自动旋转,启动的时候还是会横屏,修改XML添加以下代码<applicationandroid:icon"@drawable/ic\_launcher"                    android:label"@string/app\_name"
Wesley13 Wesley13
3年前
1050 螺旋矩阵
1050 螺旋矩阵 (25分)本题要求将给定的 N 个正整数按非递增的顺序,填入“螺旋矩阵”。所谓“螺旋矩阵”,是指从左上角第1个格子开始,按顺时针螺旋方向填充。要求矩阵的规模为 m 行 n 列,满足条件:m×n 等于 N;m≥n;且 m−n 取所有可能值中的最小值。输入格式:输入在第1行中给出一个正整数 N,第2行给出 N
Stella981 Stella981
3年前
Leet Code 74 Search a 2D Matrix
写一个高效的算法,在m×n的二维矩阵中搜索一个值。矩阵有以下性质:每一行从左到右为升序。每一行的第一个数都比上一行最后一个数大。例如,有以下矩阵:\  \1,  3, 5, 7\,  \10,11,16,20\,  \23,30,34,50\\给定target3,返
Stella981 Stella981
3年前
Leetcode 363.矩形区域不超过k的最大数值和
矩形区域不超过k的最大数值和给定一个非空二维矩阵 _matrix_和一个整数_k_,找到这个矩阵内部不大于_k_的最大矩形和。示例:输入:matrix\\1,0,1\,\0,2,3\\,k2输出:2解释: 矩形区域 \\0,1\,
Stella981 Stella981
3年前
LeetCode(48):旋转图像
Medium!题目描述:给定一个 _n_× _n_ 的二维矩阵表示一个图像。将图像顺时针旋转90度。说明:你必须在原地(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fbaike.baidu.com%2Fitem%2F%25E5%258E%259
Stella981 Stella981
3年前
Python+OpenCV图像处理(九)—— 模板匹配
百度百科:模板匹配是一种最原始、最基本的模式识别方法,研究某一特定对象物的图案位于图像的什么地方,进而识别对象物,这就是一个匹配问题。它是图像处理中最基本、最常用的匹配方法。模板匹配具有自身的局限性,主要表现在它只能进行平行移动,若原图像中的匹配目标发生旋转或大小变化,该算法无效。简单来说,模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域。工
美凌格栋栋酱 美凌格栋栋酱
4个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
贾蔷 贾蔷
2天前
洛谷P11228地图探险题解(CSP-J 2024真题)
一、题目重述给定n×m的二维矩阵表示探险地图,每个格子可能是:平地('.')障碍物('')起点('S')终点('E')求从起点到终点的最短路径步数,无法到达则输出1。二、核心算法:BFS广度优先搜索选择原因:BFS是解决无权图最短路径问题的最优方案,时间复
星屑
星屑
Lv1
空有一身热爱,却入不了这山海。
文章
5
粉丝
0
获赞
0