这题把数组拉成一维就能发现,本质是个数组的滚动。傻里傻气的模拟移动过程就输了(确信
例如1 2 3 4 5 6 7 8 9移动一次就是9 1 2 3 4 5 6 7 8,移动9次就是1 2 3 4 5 6 7 8 9。
移动次数k先对总个数取模,表示实际移动次数。之后就是模拟下标了。
代码贴个丑丑的代码(逃
class Solution {
public List> shiftGrid(int[][] grid, int k) {
List> ans = new ArrayList>();
int n = grid.length;
int m = grid[0].length;
k = k % (n * m);
int begin = n * m - k;
for (int i = 0; i < n; i++) {
List tmp = new ArrayList();
for (int j = 0; j < m; j++) {
int now = (begin + i * m + j) % (n * m);
int value = grid[now / m][now % m];
tmp.add(value);
}
ans.add(tmp);
}
return ans;
}
}



