LeetCode-48. Rotate Image

本文介绍了一种高效的矩阵顺时针旋转90度的方法,首先进行矩阵转置,然后翻转每一行元素,提供了C++和Java两种语言的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

You are given an n x n 2D matrix representing an image.

Rotate the image by 90 degrees (clockwise).

Note:
You have to rotate the image in-place, which means you have to modify the input 2D matrix directly. DO NOT allocate another 2D matrix and do the rotation.

题意:

给一个 n x n的矩阵,要求我们就在此矩阵空间上将这个矩阵顺时针旋转90度。
比如给的例子
[
[1,2,3],
[4,5,6],
[7,8,9]
],
我们最终要把它变成
[
[7,4,1],
[8,5,2],
[9,6,3]
]

解法步骤:

方法有很多,这里只给出一种解法。

  1. 先求原矩阵的转置矩阵,比如例子给出的矩阵的转置矩阵为
    [
    [1,4,7],
    [2,5,8],
    [3,6,9]
    ]
  2. 将转置矩阵的每一行的数字翻转,得到最终结果。
    [
    [7,4,1],
    [8,5,2],
    [9,6,3]
    ]
C++实现
class Solution {
public:
    void rotate(vector<vector<int>>& matrix) {
        if(matrix.size()==0||matrix.size()==1)
            return;
        for(int i=0;i<matrix.size();++i)
        {
            for(int j=i+1;j<matrix[i].size();++j)
            {
                swap(matrix[i][j],matrix[j][i]);
            }
        }
        for(int i=0;i<matrix.size();++i)
        {
            reverse(matrix[i].begin(),matrix[i].end());
        }
    }
};
Java实现
class Solution {
    public void rotate(int[][] matrix) {
        for(int i=0;i<matrix.length;++i)
        {
            for(int j=i+1;j<matrix[0].length;++j)
            {
                int temp = 0;
                temp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = temp;
            }

        }
        for(int i=0;i<matrix.length;++i)
        {
            for(int j=0;j<matrix.length/2;++j)
            {
                int temp = 0;
                temp = matrix[i][j];
                matrix[i][j] = matrix[i][matrix.length-1-j];
                matrix[i][matrix.length-1-j] = temp;
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值