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
classSolution { 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; } };