1 /* 2 * clockwise rotate 3 * first reverse up to down, then swap the symmetry 4 * 1 2 3 7 8 9 7 4 1 5 * 4 5 6 => 4 5 6 => 8 5 2 6 * 7 8 9 1 2 3 9 6 3 7 */ 8 void rotate(vector<vector<int> > &matrix) { 9 reverse(matrix.begin(), matrix.end()); 10 for (int i = 0; i < matrix.size(); ++i) { 11 for (int j = i + 1; j < matrix[i].size(); ++j) 12 swap(matrix[i][j], matrix[j][i]); 13 } 14 } 15 16 /* 17 * anticlockwise rotate 18 * first reverse left to right, then swap the symmetry 19 * 1 2 3 3 2 1 3 6 9 20 * 4 5 6 => 6 5 4 => 2 5 8 21 * 7 8 9 9 8 7 1 4 7 22 */ 23 void anti_rotate(vector<vector<int> > &matrix) { 24 for (auto vi : matrix) reverse(vi.begin(), vi.end()); 25 for (int i = 0; i < matrix.size(); ++i) { 26 for (int j = i + 1; j < matrix[i].size(); ++j) 27 swap(matrix[i][j], matrix[j][i]); 28 } 29 }
这边有一个题目链接可以练习。