LeetCode-笔记-48.旋转图像

1、本人思路

通过观察发现,就是将列数组从下往上组合形成一个新数组,插入到分别的行中。

因此循环次数为matrix.size();

因此代码思路如下:

class Solution {public:void rotate(vector<vector<int>>& matrix) {//观察图像可知,旋转圈数为matrix.size()/2 取整 //开始的想法/int revolve_circle_sum=matrix.size()/2;vector<int> save_numbers;//存储数组vector<vector<int>>  matrix1=matrix;//存储原始数据;//再通过观察发现,就是将列数组从下往上组合形成一个新数组,插入到分别的行中//因此循环次数为matrix.size();/*for(int already_revolve_circle_sum=0;already_revolve_circle_sum<revolve_circle_sum;already_revolve_circle_sum++){}*/int for_sums=matrix.size();for(int i=0;i<for_sums;++i){for(int j=matrix.size()-1;j>=0;--j){save_numbers.push_back(matrix1[j][i]);}matrix.insert(matrix.begin()+i,save_numbers);matrix.erase(matrix.begin()+i+1);save_numbers.clear();}}
};

2、官方思路

1、思路一,与本人思路差不多。得到式子

matrix[col] [n-row-1]=matrix[row] [col]; ///( n为matrix.size())

2、思路二,原地旋转,如下图

可以得到 n为matrix.size()

int temp = matrix[i][j];
matrix[i][j] = matrix[n - j - 1][i];
matrix[n - j - 1][i] = matrix[n - i - 1][n - j - 1];
matrix[n - i - 1][n - j - 1] = matrix[j][n - i - 1];
matrix[j][n - i - 1] = temp;

计算如下:

由思路一的式子得;

matrix[col] [n-row-1]=matrix[row] [col];

令row=col ,col=n-row-1;得

matrix[n-row-1] [n-col-1]=matrix[col] [n-row-1];

同理令row=n-row-1,col=n-col-1得

matrix[n-col-1] [row]=matrix[n-row-1] [n-col-1];

同理令row=n-col-1,col=row得

matrix[row] [col]=matrix[n-col-1] [row];

可得:

matrix[col][n-row-1]=matrix[row][col];
matrix[n-row-1][n-col-1]=matrix[col][n-row-1];
matrix[n-col-1][row]=matrix[n-row-1][n-col-1];
matrix[row][col]=matrix[n-col-1][row]//形成环路//于是可得:
int temp=matrix[row][col];
matrix[row][col]=matrix[n-col-1][row]//形成环路
matrix[n-col-1][row]=matrix[n-row-1][n-col-1];
matrix[n-row-1][n-col-1]=matrix[col][n-row-1];
matrix[col][n-row-1]=temp;

总共循环几次呢,可得每个圈循环(matrix.size()+1)/2;

总共几个圈呢?可得matrix.size()/2;

则代码为:

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

LeetCode-笔记-48.旋转图像相关推荐

  1. 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 ...

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

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

  3. Java实现 LeetCode 48 旋转图像

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

  4. LeetCode 07: T48. 旋转图像 (中等); T54. 螺旋矩阵(中等); T240. 搜索二维矩阵 II (中等)

    文章目录 T19: 48. 旋转图像 (中等) 思路 解法 1: 新增数组 解法 2: 原地旋转 T20: 54. 螺旋矩阵(中等) 思路 解法: 到边界换方向 T21: 240. 搜索二维矩阵 II ...

  5. LeetCode—笔记—51、N皇后——递归回溯,个人思路,简单易懂

    LeetCode-笔记-51.N皇后--递归回溯,个人思路,简单易懂 51. N 皇后 n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 给你一个整数 ...

  6. Leetcode 笔记 116 - Populating Next Right Pointers in Each Node

    题目链接:Populating Next Right Pointers in Each Node | LeetCode OJ Given a binary tree struct TreeLinkNo ...

  7. leetcode笔记(Python版)待更新

    LeetCodeTop100 题目 1    两数之和 42.20% Easy 2    两数相加 30.70%    Medium 3    无重复字符的最长子串 28.00%    Medium ...

  8. LeetCode笔记:Biweekly Contest 56(补发)

    LeetCode笔记:Biweekly Contest 56 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 ...

  9. LeetCode笔记:原地修改数组

    LeetCode笔记:原地修改数组 自大学开始,我便陆陆续续的学习一些 算法和数据结构 方面的内容,同时也开始在一些平台刷题,也会参加一些大大小小的算法竞赛.但是平时刷题缺少目的性.系统性,最终导致算 ...

最新文章

  1. 解决Ubuntu系统下git clone下载速度较慢的问题(亲测有效)
  2. 火热的 Web 3,究竟离我们有多远?
  3. w3wp oracle连接数高,分析案例:應用服務器W3WP進程CPU持續超過百分之九十(Oracle客戶端Bug)...
  4. 利用安卓手机的OTG共享有线网络
  5. C语言跨平台游戏开发
  6. USGS下载遥感影像——以Landsat影像下载为例
  7. kafka系列之kafka分区与备份(4)
  8. Laravel 代码开发最佳实践
  9. python 处理xml
  10. php模拟微信公众账号登陆,[微信公众号]php版模拟登录,向指定用户推送消息目前...
  11. Flink SQL Client的使用
  12. 修改电脑配置的方法(被骗之后才学会的)
  13. 区块链学习笔记23——ETH反思
  14. Android 将本地资源图片转换成Drawable,进行设置大小
  15. Android 自定义seekbar【仿微信联系人】
  16. CodeLite工具的使用
  17. python中的格式化输出
  18. 细细品味C#——重构的艺术
  19. 测试计划与手动和自动化项目有何不同?
  20. 安装双系统后卸载统信

热门文章

  1. 在线作图|如何绘制一张好看相关性矩阵图
  2. 德国波恩大学于鹏组根系与微生物互惠方向招收博士研究生
  3. 随机森林RandomForest挖掘生物标记预测分类
  4. 2019年上半年国内学者在植物领域共发表6篇Science, 1篇Nature,1篇Cell!
  5. R语言plotly可视化:plotly可视化箱图、相同数据集对比使用不同分位数算法的可视化差异(quartilemethod参数、linear、inclusive、exclusive)
  6. R语言广义线性模型函数GLM、glm函数构建泊松回归模型、模型中存在过离散(Overdispersion)、则将连接函数从possion函数替换为quasipoisson函数重新构建泊松回归模型
  7. R语言str_extract函数从字符串中抽取匹配模式的字符串
  8. R语言pmax函数和pmin函数按位计算向量最大值、最小值实战
  9. Plotly绘制时间序列图实战:简单时序图、时间范围限制的时序图
  10. R构建对数回归模型(Logarithmic Regression)