给你一个 n 行 m 列的二维网格 grid 和一个整数 k。你需要将 grid 迁移 k 次。
每次「迁移」操作将会引发下述活动:
位于 grid[i][j] 的元素将会移动到 grid[i][j + 1]。 位于 grid[i][m - 1] 的元素将会移动到 grid[i + 1][0]。 位于 grid[n - 1][m - 1] 的元素将会移动到 grid[0][0]。 请你返回 k 次迁移操作后最终得到的 二维网格。
k = 1
k = 4
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/shift-2d-grid 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
public:
vector<vector<int>> shiftGrid(vector<vector<int>>& grid, int k) {
vector<vector<int>> ans(grid);
int n = grid.size(), m = grid[0].size();
int i, j, x, y;
for(i = 0; i < n; ++i)
for(j = 0; j < m; ++j)
{
x = (m*i+j+k)/m%n;
y = (m*i+j+k)%m;
ans[x][y] = grid[i][j];
}
return ans;
}
};