LeetCode 1260. Shift 2D Grid
考点 | 难度 |
---|---|
Matrix | Easy |
题目
Given a 2D grid of size m x n
and an integer k. You need to shift the grid k times.
In one shift operation:
Element at grid[i][j]
moves to grid[i][j + 1]
.
Element at grid[i][n - 1]
moves to grid[i + 1][0]
.
Element at grid[m - 1][n - 1]
moves to grid[0][0]
.
Return the 2D grid after applying shift operation k times.
思路
最后k个数字移到最前面,所以从倒数第k个数字开始加到ans
里。int start = m * n - k % (m * n);
是因为k
的范围是0 <=k <=100
答案
public List<List<Integer>> shiftGrid(int[][] grid, int k) {
int m = grid.length, n = grid[0].length;
int start = m * n - k % (m * n);
LinkedList<List<Integer>> ans = new LinkedList<>();
for (int i = start; i < m * n + start; ++i) {
int j = i % (m * n), r = j / n, c = j % n;
if ((i - start) % n == 0)
ans.add(new ArrayList<>());
ans.peekLast().add(grid[r][c]);
}
return ans;
}