LeetCode 1260. 二维网格迁移
给你一个 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 次迁移操作后最终得到的 二维网格。来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/shift-2d-grid
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
简单构造 、模拟。每一次变换需要将后面n-1列的数往右移,然后特殊处理第一列的数即可。
代码
class Solution
{
public:
vector<vector<int>> shiftGrid(vector<vector<int>>& grid, int k)
{
int m=grid.size();
int n=grid[0].size();
int t[55];
for(int i=0;i<k;i++)
{
t[0]=grid[m-1][n-1];
for(int u=1;u<=m-1;u++)
t[u]=grid[u-1][n-1];
for(int j=0;j<m;j++)
{
for(int p=n-1;p>=1;p--)
{
grid[j][p]=grid[j][p-1];
}
}
for(int q=0;q<=m-1;q++)
grid[q][0]=t[q];
}
return grid;
}
};//复杂度O(n^2)
收获
- 还在开始适应这个刷题节奏的阶段,这种模拟题很适合练手。
- 但是这种模拟题现在自己已经不能很快的切掉了,提示自己做题前想好思路。