leetcode:数组之Rotate Image
给定一二维数组,将其旋转90度。
例如
C++实现:
#include <iostream>
#include <vector>
using namespace std;
void rotate(vector<vector<int>>& matrix)
{
const int n = matrix.size();
for (int i = 0; i < n; ++i) // 沿着副对角线反转
for (int j = 0; j < n - i; ++j)
swap(matrix[i][j], matrix[n - 1 - j][n - 1 - i]);
for (int i = 0; i < n / 2; ++i) // 沿着水平中线反转
for (int j = 0; j < n; ++j)
swap(matrix[i][j], matrix[n - 1 - i][j]);
//for (int i = 0; i < n; ++i) // 沿着主对角线反转
// for (int j = i + 1; j < n; ++j)
// swap(matrix[i][j], matrix[j][i]);
}
int main()
{
int m=2,n=2;
vector<vector<int>> ivec;
ivec.resize(m,vector<int>(n));
for(auto i=0;i<m;i++)
{
for(auto j=0;j<n;j++)
{
ivec[i][j]=i*j+i;
}
}
rotate(ivec);
for(auto i=0;i <m;i++)
{
for(auto j=0;j <n;j++)
cout <<ivec[i][j] << " ";
cout <<endl;
}
return 0;
}
输出结果: