二维网格迁移
1260. 二维网格迁移
难度简单79
给你一个 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
次迁移操作后最终得到的 二维网格。
示例 1:
1 |
|
示例 2:
1 |
|
示例 3:
1 |
|
提示:
m == grid.length
n == grid[i].length
1 <= m <= 50
1 <= n <= 50
-1000 <= grid[i][j] <= 1000
0 <= k <= 100
题解
直接使用模拟的方式即可推断
假定矩阵grid
的行列长度分别为n, m
,首先对 k 进行求余操作,即 k %= (m * n)
,然后使用模拟的方式得到迁移后的矩阵,对于迁移的元素索引为i,j
, 该元素迁移前则在i, j-k
位置,有以下两种情况:
j-k>=0
,可以直接迁移前的i, j-k
的元素赋给迁移后的矩阵j-k<0
,那么向上一行查找,即i--
,k
已经迁移了j+1
个元素,需要减去,即j=m-1
,再判断是否j-k<0
成立,如果成立,继续这一步操作,其中,如果i<0
,则i=n-1
1 |
|
- 时间复杂度:$O(nmk)$
- 空间复杂度:$O(nm)$
1260二维网格迁移
http://example.com/2022/07/20/leetcode每日一题/1260.二维网格迁移/