本題可以先找規律。
遍歷藍色框數字,找到對應的其餘三個數字,交換即可。
假設當前爲matrix[i][j],
其餘三個數分別爲:
[j][m_size-i-1]
[m_size-i-1][m_size-j-1]
[m_size-j-1][i]
代碼:
void rotate(vector<vector<int>>& matrix) {
int m_size = matrix.size();
for(int i = 0; i < m_size/2; i ++)
{
for(int j = 0; j < (m_size+1)/2; j++)
{
int temp = matrix[i][j];
matrix[i][j] = matrix[m_size-j-1][i] ;
matrix[m_size-j-1][i] = matrix[m_size-i-1][m_size-j-1];
matrix[m_size-i-1][m_size-j-1] = matrix[j][m_size-i-1];
matrix[j][m_size-i-1] = temp;
}
}
收穫:懂得如何交換四個數,只需要保存一個temp,按照順序來即可。