旋转矩阵(LeetCode)

题目:旋转矩阵

题目链接

题目描述:

给定一幅由N × N矩阵表示的图像,其中每个像素的大小为4字节,编写一种方法,将图像旋转90度。不占用额外内存空间能否做到?

示例输入:
给定 matrix =
[
[1,2,3],
[4,5,6],
[7,8,9]
]
示例输出:
原地旋转输入矩阵,使其变为:
[
[7,4,1],
[8,5,2],
[9,6,3]
]

题解

要想让矩阵旋转90度,可以先让矩阵左右对换,然后再让矩阵沿对角线两两对换。

代码:

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

执行用时 :4 ms, 在所有 C++ 提交中击败了76.32%的用户
内存消耗 :9.1 MB, 在所有 C++ 提交中击败了100.00%的用户

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值