黄浦网站设计网站引流推广软件
题目如下
观察交换规律我们可以看到,第一行第一个转移到的的最后一列的第一个。即f(r,c) 转移到f(c,n - r - 1)
我们可以把r c赋值成(c,n - r - 1)可以发现一个位置走一圈总共有四个式子。
我们可以把第一个位置用t暂存随后逆推公式把后面的轮换上来。
temp = matrix[i][j];matrix[i][j] = matrix[n - j - 1][i];matrix[n - j - 1][i] = matrix[n - i - 1][n - j - 1];matrix[n - i - 1][n - j - 1] = matrix[j][n - i - 1];matrix[j][n - i - 1] = temp;
通过代码
class Solution {
public:void rotate(vector<vector<int>>& matrix) {int n = matrix.size();int temp;for (int i = 0; i < n / 2; ++i) {for (int j = 0; j < (n + 1) / 2; ++j) {temp = matrix[i][j];matrix[i][j] = matrix[n - j - 1][i];matrix[n - j - 1][i] = matrix[n - i - 1][n - j - 1];matrix[n - i - 1][n - j - 1] = matrix[j][n - i - 1];matrix[j][n - i - 1] = temp;}}}
};