-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathShift2DGrid.java
More file actions
64 lines (60 loc) · 1.51 KB
/
Shift2DGrid.java
File metadata and controls
64 lines (60 loc) · 1.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package easy;
import java.util.*;
/**
* ClassName: Shift2DGrid.java
* Author: chenyiAlone
* Create Time: 2020/1/13 22:04
* Description: No.1260 Shift 2D Grid
*
*
* 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.
*
*
*
* Example 1:
*
*
* Input: grid = [[1,2,3],[4,5,6],[7,8,9]], k = 1
* Output: [[9,1,2],[3,4,5],[6,7,8]]
* Example 2:
*
*
* Input: grid = [[3,8,1,9],[19,7,2,5],[4,6,11,10],[12,0,21,13]], k = 4
* Output: [[12,0,21,13],[3,8,1,9],[19,7,2,5],[4,6,11,10]]
* Example 3:
*
* Input: grid = [[1,2,3],[4,5,6],[7,8,9]], k = 9
* Output: [[1,2,3],[4,5,6],[7,8,9]]
*
*
* Constraints:
*
* m == grid.length
* n == grid[i].length
* 1 <= m <= 50
* 1 <= n <= 50
* -1000 <= grid[i][j] <= 1000
* 0 <= k <= 100
*
*/
public class Shift2DGrid {
public List<List<Integer>> shiftGrid(int[][] grid, int k) {
int n = grid.length, m = grid[0].length, len = n * m;
Integer[][] ng = new Integer[n][m];
k %= len;
List<List<Integer>> ret = new ArrayList<>();
for (int i = 0, j = k; i < len; i++, j = (j + 1) % len) {
ng[j / m][j % m] = grid[i / m][i % m];
}
for (Integer[] arr : ng)
ret.add(Arrays.asList(arr));
return ret;
}
}