二维网格迁移
给你一个 m 行 n 列的二维网格 grid 和一个整数 k。你需要将 grid 迁移 k 次。
每次「迁移」操作将会引发下述活动:
- 位于 $grid[i][j]$ 的元素将会移动到 $grid[i][j + 1]$。
- 位于 $grid[i][n - 1] $的元素将会移动到 $grid[i + 1][0]$。
- 位于 $grid[m - 1][n - 1]$ 的元素将会移动到 $grid[0][0]$。
- 请你返回 $k $次迁移操作后最终得到的 二维网格。



class Solution {
public:
vector<vector<int>> shiftGrid(vector<vector<int>>& grid, int k) {
int row = grid.size();
int col = grid[0].size();
int len = row*col;
vector<vector<int>> temp(row,vector<int>(col));
k = k % len;
for(int i = 0; i < len-k; ++i){
temp[(i+k)/col][(i+k)%col]=grid[i/col][i%col];
}
for(int i = 0; i < k; ++i){
temp[i/col][i%col]=grid[(len-k+i)/col][(len-k+i)%col];
}
return temp;
}
};
Subscribe
Login
Please login to comment
0 评论