http://oj.leetcode.com/problems/rotate-image/
将矩阵顺时针旋转90度。要求为原地算法。
注意对输入的测试,矩阵为空,长度为1,为2时……
#include <iostream> #include <vector> using namespace std; class Solution { public: void rotate(vector<vector<int> > &matrix) { if(matrix.empty()) return; vector<vector<int> >matrixB; vector<int> onePiece; int len = matrix[0].size(); if(len<=1) { return; } for(int j = 0;j<len;j++) { onePiece.clear(); for(int i = 0;i<len;i++) { onePiece.push_back(matrix[len-1-i][j]); } matrixB.push_back(onePiece); } matrix = matrixB; } }; int main() { Solution myS; vector<vector<int> > matrix; vector<int> onePiece; onePiece.clear(); onePiece.push_back(1); matrix.push_back(onePiece); /*onePiece.push_back(2); onePiece.push_back(5); matrix.push_back(onePiece); onePiece.clear(); onePiece.push_back(3); onePiece.push_back(4); onePiece.push_back(6); matrix.push_back(onePiece); onePiece.clear(); onePiece.push_back(8); onePiece.push_back(9); onePiece.push_back(10);*/ //matrix.push_back(onePiece); myS.rotate(matrix); return 0; }
原地算法如下: