原题记录:https://blog.csdn.net/chamao_/article/details/143365861?fromshare=blogdetail&sharetype=blogdetail&sharerId=143365861&sharerefer=PC&sharesource=chamao_&sharefrom=from_link

C++解法:

class Solution {
public:
    void rotate(vector<vector<int>>& matrix) {
        int matrixSize = matrix.size();
        if (matrixSize == 0) return;
        // 先进行主对角线翻转
        for(int i = 0; i < matrixSize; i++)
        {
            for(int j = 0; j < i; j++)
            {
                int temp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = temp;
            }
        }
        // 再进行左右翻转
        for(int i = 0; i < matrixSize; i++)
        {
            for(int j = 0; j <matrixSize / 2; j++)
            {
                int temp = matrix[i][j];
                matrix[i][j] = matrix[i][matrixSize - 1 - j];
                matrix[i][matrixSize - 1 - j] = temp;
            }
        }
    }
};

知识点:

在C++中,可以用matrix.size()来获取行数,matrix[0].size()来获取列数。
但需要注意,如果matrix.size() == 0,不要访问matrix[0],否则会越界。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐