您的位置:首页 > 其它

Rotate Image

2015-10-28 17:27 225 查看
题目名称

Rotate Image—LeetCode链接

描述

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

Rotate the image by 90 degrees (clockwise).

Follow up:

Could you do this in-place?

分析

  题目中要求我们在原来的二维数组上进行修改,不要使用额外的空间。代码是参考别人的,我这里做一下解释:



  用到两层循环,最外层循环用来交换每一圈的数组值,因为每一圈上的数据交换都相同规律,所以内层循环用来交换一圈上所有需要顺时针旋转90°的值。

C++代码

class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
int n = matrix.size();
int a = 0;
int b = n-1;
while(a<b){
for(int i=0;i<(b-a);++i){
swap(matrix[a][a+i], matrix[a+i]);
swap(matrix[a][a+i], matrix[b][b-i]);
swap(matrix[a][a+i], matrix[b-i][a]);
}
++a;
--b;
}
}
};


[b]总结


  一开始想找出所有位置经顺时针旋转90°之后的位置,但是没有找到通用的,这道题目也难在这里。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息