给你一个 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;
    }
};

你可能也喜欢

最后修改日期:2020年7月1日