面试题 01.07. 旋转矩阵
给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。
不占用额外内存空间能否做到?
利用抽象的原则。将大问题分解成小问题。
class Solution { public: void rotate(vector<vector<int>>& matrix) { int tr=0; int tc=0; int dr=matrix.size()-1; int dc=matrix.size()-1; while(tr<dc) { rotate_edge( matrix,tr++,tc++,dr--,dc--); } } void rotate_edge(vector<vector<int>>& matrix,int tr,int tc,int dr,int dc) { for(int i=0;i<dr-tr;i++) { int temp=matrix[tr][tc+i]; matrix[tr][tc+i]=matrix[dr-i][tc]; matrix[dr-i][tc]=matrix[dr][dc-i]; matrix[dr][dc-i]=matrix[tr+i][dc]; matrix[tr+i][dc]=temp; } } };

浙公网安备 33010602011771号