简单题,可以通过示例看出规律,即一维数组的向右循环移动,所以可以通过索引模拟做出该题。
func shiftGrid(grid [][]int, k int) [][]int {
// 有规律可言,看成是一维数组在向右循环移动一次
m, n := len(grid), len(grid[0])
ans := make([][]int, m)
for i := range ans {
ans[i] = make([]int, n)
}
for i, r := range grid {
for j, v := range r {
// 第i行第j个,也就是i * n + j,再加上移动的k次
ni := (i * n + j + k) % (m * n)
ans[ni / n][ni % n] = v
}
}
return ans
}