【一天一题—Day1】1260. 二维网格迁移
本文最后更新于 2024年11月7日 下午
一、前景提要
距离我尽量维持一天一题已经过去了一个月,整个6月份都在忙期末作业、期末复习和期末实训,放暑假后一直在打电动,在装修博客,导致我一天一题是鸽了又鸽,状态全无。
这让本就是菜鸡的我,又彻底变回纯飞舞,还是连题目都读不太懂的那种。
所以我决心恢复往日的状态。
二、题目
难度:简单
给你一个 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:
输入:grid = [[1,2,3],[4,5,6],[7,8,9]], k = 1
输出:[[9,1,2],[3,4,5],[6,7,8]]
示例2:
输入:grid = [[3,8,1,9],[19,7,2,5],[4,6,11,10],[12,0,21,13]], k = 4
输出:[[12,0,21,13],[3,8,1,9],[19,7,2,5],[4,6,11,10]]
示例3:
输入:grid = [[1,2,3],[4,5,6],[7,8,9]], k = 9
输出:[[1,2,3],[4,5,6],[7,8,9]]
提示:
- m == grid.length
- n == grid[i].length
- 1 <= m <= 50
- 1 <= n <= 50
- -1000 <= grid[i][j] <= 1000
- 0 <= k <= 100
三、解答
简单题我重拳出击!……?
题目我就读了好久,看半天才理解题意
而且因为我状态全无,二维数组的列数行数一直在混淆,边界处理一直在写,一直在犯低级错误
即使最后写好了,因为是暴力解法也没有太大参考意义,即使是这样都花费了我数个小时,我真是服了,状态真的太差了……
1,暴力解法
1 |
|
2,官方解法
还是看看远处的官方题解吧家人们
拍扁
转换成一维数组,迁移操作前每个元素的下标为:index = i * n + j
然后循环右移
k次迁移后下标变成:index1 = (index + k) % (m * n)
最后是还原
一维数组再变回二维,行号就是⌊index1 / n⌋
,列号是index1 % n
⌊x⌋:地板函数,或取整函数,表示小于 x 的最大整数;⌈x⌉:天花板函数,表示大于 x 的最小整数。
我好像完全理解了……?😤后天再来做做看。
【一天一题—Day1】1260. 二维网格迁移
https://moechun.fun/2022/07/20/【一天一题—Day1】1260. 二维网格迁移/