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之路的主要内容,如果未能解决你的问题,请参考以下文章