[LeetCode] Shift 2D Grid

1260. Shift 2D Grid

Given a 2D grid of size m x n and an integer k. You need to shift the grid k times.

In one shift operation:

  • Element at grid[i][j] moves to grid[i][j + 1].
  • Element at grid[i][n - 1] moves to grid[i + 1][0].
  • Element at grid[m - 1][n - 1] moves to grid[0][0].

Return the 2D grid after applying shift operation k times.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
public:
vector<vector<int>> shiftGrid(vector<vector<int>>& g, int k) {
int n = g.size(), m = g[0].size();
k %= m * n;
k = m * n - k;
vector<vector<int>> res(n, vector<int>(m));
for(int i = 0; i < n*m; i++) {
int y = i / m, x = i % m;
int ty = ((i + k) % (m * n)) / m, tx = ((i + k) % (m * n)) % m;
res[y][x] = g[ty][tx];
}
return res;
}
};
Author: Song Hayoung
Link: https://songhayoung.github.io/2022/04/11/PS/LeetCode/shift-2d-grid/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.