不好意思,我之前说的有点问题,正确的应该是这样: // 顺时针旋转 void rotate(vector<vector<int>>& matrix) { int n = matrix.size(); if (n < 2)return; //1. 交换对角元素 for (int i = 0; i < n; ++i) { for (int j = 0; j < i; ++j) { swap(matrix[i][j], matrix[j][i]); } } //2. 每一行逆序 for (int i = 0;i < n;++i) { reverse(matrix[i].begin(), matrix[i].end()); } } //同理:若需要进行逆时针翻转,则先对每一行进行逆序,然后交换对角元素