[数组][对角线交换]leetcode48:翻转图像(medium)

编程入门 行业动态 更新时间:2024-10-27 04:32:21

[数组][<a href=https://www.elefans.com/category/jswz/34/1718272.html style=对角线交换]leetcode48:翻转图像(medium)"/>

[数组][对角线交换]leetcode48:翻转图像(medium)

题目:

48. 旋转图像

题解:

  • 解法1:找规律
  • 转换图像的本质就是着四个点(i,j) , (j, n-i-1), (n-i-1, n-j-1), (n -j-1, i)在两两交换,这里需要注意一下需要旋转的层数为n/2就好了。

  • 解法2:翻转
  • 旋转图像的本质就是先沿水平对角线翻转,然后再沿正对角线翻转,就得到最后结果了。

代码如下:

class Solution {
public://题解1:找规律,其实每个框架交换四个点的值void rotate_1(vector<vector<int>>& matrix) {int n=matrix.size();for(int i=0;i<n/2;++i){//需要旋转的层数for(int j=i;j<n-i-1;++j){//j最大只能到框架的倒数第二个点,因为j到第一个点时,4个顶点已经交换了,不需要再次交换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;}}}//题解2:翻转void rotate(vector<vector<int>>& matrix){int n=matrix.size();//第一次翻转:沿水平对角线上下翻转for(int i=0;i<n/2;++i){swap(matrix[i],matrix[n-i-1]);}//第二次翻转:沿正对角线翻转for(int i=0;i<n;++i)//[i,j]的坐标是左上三角的坐标点,然后与右下三角的坐标点交换for(int j=i+1;j<n;++j){swap(matrix[i][j],matrix[j][i]);}}
};

更多推荐

[数组][对角线交换]leetcode48:翻转图像(medium)

本文发布于:2023-07-28 18:53:08,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1279867.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:对角线   数组   图像   medium

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!