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

将图像顺时针旋转 90 度。

说明:

你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。

示例 1:

示例 2:

————————
解题思路:选择某一个点为旋转点,则矩阵中对应的四个点之间存在一个规律,比如对于矩阵中的某个点matrix[i][j]matrix[i][j]matrix[i][j],其在矩阵中对应位置的其余三个点之间存在以下规律:matrix[i][j]=matrix[n−1−j][i]matrix[i][j] = matrix[n-1-j][i]matrix[i][j]=matrix[n−1−j][i]matrix[n−1−j][i]=matrix[n−1−i][n−1−j]matrix[n-1-j][i] = matrix[n-1-i][n-1-j]matrix[n−1−j][i]=matrix[n−1−i][n−1−j]matrix[n−1−i][n−1−j]=matrix[n−1−(n−1−j)][n−1−i]matrix[n-1-i][n-1-j] = matrix[n-1-(n-1-j)][n-1-i]matrix[n−1−i][n−1−j]=matrix[n−1−(n−1−j)][n−1−i]matrix[n−1−(n−1−j)][n−1−i]=matrix[i][j]matrix[n-1-(n-1-j)][n-1-i] = matrix[i][j]matrix[n−1−(n−1−j)][n−1−i]=matrix[i][j]通过以上这些规律,可以得到旋转矩阵的C++代码如下,该代码时间复杂度为O(n2)O(n^2)O(n2),空间复杂度为O(1)O(1)O(1):

class Solution {public:void rotate(vector<vector<int>>& matrix) {int n = matrix.size();if(n == 1 || n == 0)return ;for(int i=0;i<(n+1)/2;++i){for(int j=i;j<(n-i-1);++j){int x = matrix[i][j];matrix[i][j] = matrix[n-1-j][i];matrix[n-1-j][i] = matrix[n-1-i][n-1-j];matrix[n-1-i][n-1-j] = matrix[j][n-1-i];matrix[j][n-1-i] = x;}}}
};

leetcode —— 48. 旋转图像相关推荐

  1. Java实现 LeetCode 48 旋转图像

    48. 旋转图像 给定一个 n × n 的二维矩阵表示一个图像. 将图像顺时针旋转 90 度. 说明: 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵.请不要使用另一个矩阵来旋转图像. 示 ...

  2. Leetcode 48. 旋转图像 (每日一题 20210813)

    给定一个 n × n 的二维矩阵 matrix 表示一个图像.请你将图像顺时针旋转 90 度.你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵.请不要 使用另一个矩阵来旋转图像.示例 1 ...

  3. leetcode 48. 旋转图像

    解题思路 将数组从里到外分为若干层, 数组 [1,2,3], [4,5,6][7,8,9]的最外层即为 [1,2,3] [4 6][7,8,9] ,将一层分为4条边,如741 123,将741放到12 ...

  4. LeetCode 48 旋转图像

    力扣 思路:过程模拟 第一步 矩阵转置 第二步 矩阵矩阵每行逆置 代码 class Solution { public:void zhuanzhi(vector<vector<int> ...

  5. 每日一道leetcode(python)48. 旋转图像

    每日一道leetcode(python)48. 旋转图像 2021-07-27 给定一个 n × n 的二维矩阵 matrix 表示一个图像.请你将图像顺时针旋转 90 度. 你必须在 原地 旋转图像 ...

  6. LeetCode-笔记-48.旋转图像

    LeetCode-笔记-48.旋转图像 1.本人思路 通过观察发现,就是将列数组从下往上组合形成一个新数组,插入到分别的行中. 因此循环次数为matrix.size(): 因此代码思路如下: clas ...

  7. LeetCode 47全排列Ⅱ48旋转图像

    原创公众号:bigsai 如果不错记得点赞收藏! 关注回复 bigsai 领取Java进阶pdf资源,回复进群加入力扣打卡群. 上周打卡内容:43字符串相乘&44通配符匹配 45跳跃游戏&am ...

  8. 48. 旋转图像 leetcode

    题目链接 给定一个 n × n 的二维矩阵 matrix 表示一个图像.请你将图像顺时针旋转 90 度. 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵.请不要 使用另一个矩阵来旋转图 ...

  9. leetcode C++ 48. 旋转图像 给定一个 n × n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。

    一.思路: 某一个的转化后的路径变化:(i,j)-->(j,n-1-i)-->(n-1-i,n-1-j)-->(i,j), 所以转变一个,就等于转变4个,n为偶数数时,遍历n*n/4 ...

最新文章

  1. 举头望明月打计算机术语,精选有关月亮的灯谜大全
  2. 图像传感器与信号处理——自动曝光算法
  3. 立即通过Xumo.TV在线观看免费电视
  4. Spring Data JPA 必须掌握的 20+ 个查询关键字
  5. linux 定时执行某个任务,多个时间段
  6. 免费——离散数学(左孝凌)课后习题答案
  7. python敏感字替换_python实现敏感词过滤的几种方法
  8. 直播APP源码开发,直播APP源码搭建,如何优化程序?
  9. 获取ADSL上网帐号密码并自动保存到D盘
  10. android官方原生主题,原生Android可以更换系统主题吗?
  11. 行云当如流水,浪潮云新一代行业云MEP战略带来了什么?
  12. 【网络安全学习之零基础】
  13. pdf文件转为md文件
  14. 数据分析真题日刷 | 京东2019春招京东数据分析类试卷
  15. 使用stress服务进行CPU和内存压力测试
  16. android知乎小圆圈刷新效果
  17. FTP voyager使用配置参考
  18. java音频教程_Java如何使用IO流实现音频的剪切和拼接的示例代码
  19. Linux下常用工具
  20. 长沙1024程序员节:陈泽辉畅谈云原生趋势和展望

热门文章

  1. 计算机达人成长之路 目录
  2. 用 npm script 实现构建流水线
  3. Oracle/Mysql查看锁表与解锁表
  4. 数据库面试 - 分库分表
  5. Java中gatSum方法是什么_Oracle中的SUM用法讲解
  6. Java+Selenium+Testng自动化测试学习(三)— 断言
  7. 任何字符串indexOf(‘‘)返回都是0,数组indexOf(‘‘)返回是-1
  8. 【Java】利用循环嵌套实现输出一天的小时和分钟
  9. mac应用打包成为dmg的方法
  10. 深入理解html5:语义,标准与样式pdf,深入理解html5语义标准与样式.doc