1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| #include <string>
#include <vector>
#include <algorithm>
using namespace std;
void shiftrow(vector<vector<int>>& v) {
int row = v.size();
vector<int> temp {begin(v[0]), end(v[0])};
for(int i = 1; i != row; ++i)
swap_ranges(begin(v[i]), end(v[i]), begin(temp));
v[0].assign(begin(temp), end(temp));
}
void rotate(vector<vector<int>>& v) {
int row = v.size(), col = v[0].size();
int temp = v[0][0];
for(int i = 1; i != col; ++i)
swap(v[0][i], temp);
for(int i = 1; i != row; ++i)
swap(v[i][col - 1], temp);
for(int i = col - 2; i >= 0; --i)
swap(v[row - 1][i], temp);
for(int i = row - 2; i > 0; --i)
swap(v[i][0], temp);
v[0][0] = temp;
}
vector<vector<int>> solution(vector<vector<int>> rc, vector<string> operations) {
for(const string& op : operations) {
if(op == "ShiftRow")
shiftrow(rc);
else // op == "Rotate"
rotate(rc);
}
return rc;
}
|