less than 1 minute read

<-E> Shift 2D Grid

// 1
class Solution {
public:
    vector<vector<int>> shiftGrid(vector<vector<int>>& grid, int k) {
       int row = grid.size();
        int col = grid[0].size();
        int n = row * col;
        vector<vector<int>> ans = grid;
        for(int i = 0; i < n; i++) {
            int j = (i + k) % n;
            int ri = i / col;
            int ci = i % col;
            int rj = j / col;
            int cj = j % col;
            ans[rj][cj] = grid[ri][ci];
        }
        return ans;
    }
};

// 2
class Solution {
public:
    vector<vector<int>> shiftGrid(vector<vector<int>>& grid, int k) {
       int row = grid.size();
        int col = grid[0].size();
        int n = row * col;
        vector<vector<int>> ans = grid;
        vector<int> tempArray;
        for(auto i : grid)
            for(auto j : i)
                tempArray.push_back(j);
        
        for(int i = 0; i != k; i++) {
            
            tempArray.insert(tempArray.begin(), tempArray[n - 1]);
            tempArray.pop_back();
        }
        
        int index = 0;
        for(int i = 0; i < row; i++) {
            for(int j = 0; j < col; j++) {
                ans[i][j] = tempArray[index];
                index++;
            }          
        }
        return ans;
    }
};