LeetCode 1260 二维网格迁移[数组] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 1260 二维网格迁移[数组] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。

解题思路:
本质上就是数组出列入列的过程,也就是说每个数在原先位置上往后挪动了k个位置,那么就要考虑到行和列的关系,代码如下:

class Solution 
public:
    vector<vector<int>> shiftGrid(vector<vector<int>>& grid, int k) 
        int m = grid.size(), n = grid[0].size();
        vector<vector<int>> ans(m, vector<int>(n));
        int row, col;
        for(int i = 0; i < m; i ++) 
            for(int j = 0; j  < n; j ++) 
                row = (i + (k + j) / n) % m;  
                col = (j + k % n) % n;
                ans[row][col] = grid[i][j];
            
        
        return ans;
    
;

但是这种处理还是稍显麻烦,尤其是行和列,需要考虑到是否越两个界限的情况,而另一种方法将数组位置化为一维数组,再往后移动然后复原,更为简便,代码如下:

class Solution 
public:
    vector<vector<int>> shiftGrid(vector<vector<int>>& grid, int k) 
        int m = grid.size(), n = grid[0].size();
        vector<vector<int>> ans(m, vector<int>(n));
        for(int i = 0; i < m; i ++) 
            for(int j = 0; j  < n; j ++) 
                int index = (n * i + j + k) % (m * n);
                ans[index / n][index % n] = grid[i][j];
            
        
        return ans;
    
;

以上是关于LeetCode 1260 二维网格迁移[数组] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

每日一题1260. 二维网格迁移

每日一题1260. 二维网格迁移

每日一题1260. 二维网格迁移

每日一题1260. 二维网格迁移

LeetCode动态规划#02图解不同路径I + II(首次涉及二维dp数组,)

79. 单词搜索-回溯算法(leetcode)