LeetCode:旋转图像
题目描述
给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。
你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。
作者:力扣 (LeetCode)
链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xnhhkv/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
题目解析
例,输入输出如下图:

这个题目与其说是一道算法题,不如说是一道找规律得题目,我们怎样才能实现图像得90度旋转呢?通过对比输入输出图中数字得位置可以发现:我们可以将第一列得4个数通过顺时针旋转到第一行上,第一行顺时针旋转到最后一列上,一次类推;内圈的数字也要如此旋转,就可以完成题目要求,如下图:

有了思路之后,我们怎么通过算法实现呢?那就是找规律了。
首先,我们以数字5为例,看一下它以及和他有关的数字的变化路径:5->11 11->16 16->15 15->5;
其次,我们继续找规律,我们将上述数字集合线标来一遍:
5(0,0)->11(0,3)
11(0,3)->16(3,3)
16(3,3)->15(3,0)
15(3,0)->5(0,0)
从下标中我们能够发现有重复的下标相互转换数字,那么他们其中有什么内在的连续呢?我们现在找规律已经使用了数字转换流程,数字的下标,仔细想一下我们是不是还有一个关键的变量没有用到,那就是n*n;
最后,我们加上二维数组的行列长度再来一遍:
5([i]:0,[j]:0)->11([i]:0,[n-i或者j-1]:3)
11()
写到第二条的时候我发现写不下去了,这里的下标有大量的0和3,没有办法分辨是i还是j,写出来的规律也不能通用,因此我决定用数字1及其相关的数字类找规律(i=0,j=1)
首先,
1->10
10->12
12->13
13->1
其次,
1(0,1)->10(1,3)
10(1,3)->12(3,2)
12(3,2)->13(2,0)
13(2,0)->(0,1)
最后,
1([i]:0,[j]:1)->10([j]:1,[n-i-1]:3)
10([j]:1,[n-i-1]:3)->12([n-i-1]:3,[n-j-1]:2)
12([n-i-1]:3,[n-j-1]:2)->13([n-j-1]:2,[i]:0)
13([n-j-1]:2,[i]:0)->1([i]:0,[j]:1)
我们找到一下通用变量,有兴趣的可以套一下数字9及其相关数字的规律:
令:int m=n-i-1,c=n-j-1。
如下图示:

题目解答
算法1,时间复杂度为 o(n²),直接上代码如下:
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
int row=matrix.size();
int colunm=matrix[0].size();
int length=row/2;
for(int i=0;i<length;i++)
{
for(int j=i;j<colunm-i-1;j++)
{
int m=row-i-1;
int n=row-j-1;
int temp=matrix[i][j];
matrix[i][j]=matrix[n][i];
matrix[n][i]=matrix[m][n];
matrix[m][n]=matrix[j][m];
matrix[j][m]=temp;
}
}
}
};
解题思路:解题思路再题目分析中已经详细阐明,此次不再累述。
LeetCode:旋转图像的更多相关文章
- LeetCode:旋转图像【48】
LeetCode:旋转图像[48] 题目描述 给定一个 n × n 的二维矩阵表示一个图像. 将图像顺时针旋转 90 度. 说明: 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵.请不要使 ...
- 前端与算法 leetcode 48. 旋转图像
目录 # 前端与算法 leetcode 48. 旋转图像 题目描述 概要 提示 解析 解法一:转置加翻转 解法二:在单次循环中旋转 4 个矩形 算法 传入测试用例的运行结果 执行结果 GitHub仓库 ...
- LeetCode——48. 旋转图像
给定一个 n × n 的二维矩阵表示一个图像. 将图像顺时针旋转 90 度. 说明: 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵.请不要使用另一个矩阵来旋转图像. 示例 1: 给定 m ...
- LeetCode初级算法之数组:48 旋转图像
旋转图像 题目地址:https://leetcode-cn.com/problems/rotate-image/ 给定一个 n × n 的二维矩阵表示一个图像. 将图像顺时针旋转 90 度. 说明: ...
- [LeetCode] Rotate Image 旋转图像
You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). ...
- LeetCode 48. Rotate Image(旋转图像)
You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). ...
- python(leetcode)-48旋转图像
给定一个 n × n 的二维矩阵表示一个图像. 将图像顺时针旋转 90 度. 说明: 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵.请不要使用另一个矩阵来旋转图像. 示例 1: 给定 m ...
- LeetCode(48):旋转图像
Medium! 题目描述: 给定一个 n × n 的二维矩阵表示一个图像. 将图像顺时针旋转 90 度. 说明: 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵.请不要使用另一个矩阵来旋转 ...
- Leetcode题库——48.旋转图像
@author: ZZQ @software: PyCharm @file: rotate.py @time: 2018/11/16 15:41 要求:给定一个 n × n 的二维矩阵表示一个图像.将 ...
随机推荐
- 2021NOI同步赛
\(NOI\) 网上同步赛 明白了身为菜鸡的自己和普通人的差距 DAY1 \(T1\) 轻重边 [题目描述] 小 W 有一棵 \(n\) 个结点的树,树上的每一条边可能是轻边或者重边.接下来你需要对树 ...
- 整数中1出现的次数 牛客网 剑指Offer
整数中1出现的次数 牛客网 剑指Offer 题目描述 求出113的整数中1出现的次数,并算出1001300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此 ...
- 20191310李烨龙作业:MySort
作业:MySort 任务详情 1. 用man sort 查看sort的帮助文档 2. sort常用选项有哪些,都有什么功能?提交相关使用的截图 3. 如果让你编写sort,你怎么实现?写出伪代码和相关 ...
- Django 实现分页功能(django 2.2.7 python 3.7.5 )
Django 自带名为 Paginator 的分页工具, 方便我们实现分页功能.本文就讲解如何使用 Paginator 实现分页功能. 一. Paginator Paginator 类的作用是将我们需 ...
- /etc/passwd 和 /etc/shadows 详解
linux操作系统上的用户如果需要登录主机,当其输入用户名和密码之后: 首先在/etc/passwd文件中查找是否有你的账号,如果没有无法登录,如果有的话将该用户的UID和GID读出来,此外将此用户的 ...
- 攻防世界 Misc 新手练习区 stegano CONFidence-DS-CTF-Teaser Writeup
攻防世界 Misc 新手练习区 stegano CONFidence-DS-CTF-Teaser Writeup 题目介绍 题目考点 隐写术 摩斯密码 Writeup 下载附件是PDF文件打开,研究一 ...
- js之变量与数据类型
变量 声明 一个变量被重新复赋值后,它原有的值就会被覆盖,变量值将以最后一次赋的值为准. var age = 18; age = 81; // 最后的结果就是81因为18 被覆盖掉了 同时声明多个变量 ...
- Linux usb 4. Device 详解
文章目录 1. 简介 2. Platform Layer 2.1 Platform Device 2.2 Platform Driver 3. UDC/Gadget Layer 3.1 Gadget ...
- elasticsearch中query_string的隐藏坑
elasticsearch查询中使用filter查询添加query_string格式为: { "query_string": { ...
- 大爽Python入门教程 0-3 安装Atom与配置Python环境
大爽Python入门公开课教案 点击查看教程总目录 安装轻量级IDE--Atom 一 下载 下面步骤1,2中网络卡顿的朋友, 请直接查看步骤3来操作 1. 搜索官网 使用搜索引擎搜索Atom, 打开搜 ...