原文:
1.6 Given an image represented by an NxN matrix, where each pixel in the image is 4 bytes, write a method to rotate the image by 90 degrees. Can you do this in place?
译文:
一张图像表示成NxN的矩阵,图像中每个像素是4个字节,写一个函数把图像旋转90度。 你能原地进行操作吗?(即不开辟额外的存储空间)
/********************************* * 日期:2014-05-14 * 作者:SJF0115 * 题目: Rotate Image * 来源:CareerCup **********************************/ #include <iostream> #include <algorithm> #include <vector> #include <string.h> using namespace std; //旋转图片 void RotateImage(vector<vector<int> > &matrix){ int i,j,temp; int N = matrix.size(); // 沿着副对角线反转 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; } } // 沿着水平中线反转 for(i = 0; i < N / 2;i++){ for (j = 0; j < N;j++){ temp = matrix[i][j]; matrix[i][j] = matrix[N - 1 - i][j]; matrix[N - 1 - i][j] = temp; } } } int main(){ vector<int> row1 = {1,2,3}; vector<int> row2 = {4,5,6}; vector<int> row3 = {7,8,9}; vector<vector<int>> matrix; matrix.push_back(row1); matrix.push_back(row2); matrix.push_back(row3); RotateImage(matrix); for(int i = 0;i < 3;i++){ for(int j = 0;j < 3;j++){ cout<<matrix[i][j]<<" "; } cout<<endl; } return 0; }
CareerCup之1.6 Rotate Image,布布扣,bubuko.com
原文地址:http://blog.csdn.net/sunnyyoona/article/details/25773331