解题思路

先斜对角线反转,然后再首尾行进行反转即可。

Code

  1. class Solution {
  2. public:
  3. void show(vector<vector<int>>& a) {
  4. for (int i=0;i<a.size();i++) {
  5. for (int j=0;j<a.size();j++) {
  6. std::cout << a[i][j] << " ";
  7. }
  8. cout << endl;
  9. }
  10. }
  11. void rotate(vector<vector<int>>& matrix) {
  12. int n = matrix.size();
  13. vector<vector<int>>& a = matrix;
  14. for (int i=0;i<n;i++) {
  15. for (int j=0;j<n-i;j++) {
  16. //std::cout << a[i][j] << a[n-1-j][n-1-i] << std::endl;
  17. swap(a[i][j], a[n-1-j][n-1-i]);
  18. }
  19. }
  20. //show(a);
  21. for (int i=0;i<n/2;i++) {
  22. // i 和 n-1-i 行互换
  23. for (int j=0;j<n;j++) {
  24. swap(a[i][j], a[n-1-i][j]);
  25. }
  26. }
  27. }
  28. };