File tree Expand file tree Collapse file tree 1 file changed +28
-0
lines changed Expand file tree Collapse file tree 1 file changed +28
-0
lines changed Original file line number Diff line number Diff line change
1
+ // Time: O(m * n)
2
+ // Space: O(1)
3
+
4
+ class Solution {
5
+ public:
6
+ vector<vector<int >> shiftGrid (vector<vector<int >>& grid, int k) {
7
+ rotate (&grid, k);
8
+ return grid;
9
+ }
10
+
11
+ private:
12
+ void rotate (vector<vector<int >> *grid, int k) {
13
+ k %= grid->size () * (*grid)[0 ].size ();
14
+ reverse (grid, 0 , grid->size () * (*grid)[0 ].size ());
15
+ reverse (grid, 0 , k);
16
+ reverse (grid, k, grid->size () * (*grid)[0 ].size ());
17
+ }
18
+
19
+ void reverse (vector<vector<int >> *grid, int start, int end) {
20
+ for (; start < end; ++start, --end) {
21
+ int start_r = start / (*grid)[0 ].size ();
22
+ int start_c = start % (*grid)[0 ].size ();
23
+ int end_r = (end - 1 ) / (*grid)[0 ].size ();
24
+ int end_c = (end - 1 ) % (*grid)[0 ].size ();
25
+ swap ((*grid)[start_r][start_c], (*grid)[end_r][end_c]);
26
+ }
27
+ }
28
+ };
You can’t perform that action at this time.
0 commit comments