题目链接:https://oj.leetcode.com/problems/rotate-image/
我的代码:
class Solution {
public:
void rotate(vector<vector<int> > &matrix) {
typedef vector<vector<int> > temp;
vector<int> b;
temp a;
int n = matrix.size();
a.resize(n);
b.resize(n);
for(temp::iterator iter = a.begin(); iter != a.end(); ++iter)
{
iter -> resize(n);
}
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
a[j][n-i-1] = matrix[i][j];
}
}
matrix = a;
}
};
网友代码:
class Solution {
public:
void rotate(vector<vector<int> > &matrix)
{
int n = matrix.size()-1,i,j,k;
for(i = 0;i < n;i++)
{
for(j = i;i+j < n;j++)
{
int x = i,y = j;//因为后面要变换下标,这里改用其他变量
int pre = matrix[x][y];//对于val1 -> val2,记录val1的值
int next;//记录val2的值
for(k = 0;k < 4;k++)//每次移动4次
{
next = matrix[y][n-x];
matrix[y][n-x] = pre;
pre = next;
int tmp = x;
x = y;
y = n - tmp;
}
}
}
}
};
效率相较下,我的用时是48ms,网友的是36ms。