1260. 二维网格迁移

- 日理万妓 2023-10-04 09:58 80阅读 0赞

给你一个 mn 列的二维网格 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:

eb8ca285444c080188f47fb86f411a45.png

  1. 输入:grid = [[1,2,3],[4,5,6],[7,8,9]], k = 1
  2. 输出:[[9,1,2],[3,4,5],[6,7,8]]

示例 2:

ee6e07495a3ef8f0fc1339ba05cf6ce0.png

  1. 输入:grid = [[3,8,1,9],[19,7,2,5],[4,6,11,10],[12,0,21,13]], k = 4
  2. 输出:[[12,0,21,13],[3,8,1,9],[19,7,2,5],[4,6,11,10]]

示例 3:

  1. 输入:grid = [[1,2,3],[4,5,6],[7,8,9]], k = 9
  2. 输出:[[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

    package Solution1260;

    import java.util.ArrayList;
    import java.util.LinkedList;
    import java.util.List;
    import java.util.Queue;

    class Solution {

    1. public List<List<Integer>> shiftGrid(int[][] grid, int k) {
    2. int n = grid.length * grid[0].length;
    3. List<List<Integer>> out = new ArrayList<List<Integer>>();
    4. Queue<Integer> q1 = new LinkedList<>();
    5. Queue<Integer> q2 = new LinkedList<>();
    6. k = k % (grid.length * grid[0].length);
    7. int index = 0;
    8. for (int i = 0; i < grid.length; i++) {
    9. for (int j = 0; j < grid[0].length; j++) {
    10. index = i * grid[0].length + j;

    // System.out.println(i * grid[0].length + j);

    1. if (n - index <= k) {
    2. q1.add(grid[i][j]);
    3. }
    4. if (n - index > k) {
    5. q2.add(grid[i][j]);
    6. }
    7. }
    8. }

    // System.out.println(q1);
    // System.out.println(q2);

    1. for (int i = 0; i < grid.length; i++) {
    2. List<Integer> row = new ArrayList<Integer>();
    3. for (int j = 0; j < grid[0].length; j++) {
    4. if (q1.size() > 0) {
    5. row.add(q1.remove());
    6. } else {
    7. row.add(q2.remove());
    8. }
    9. }
    10. out.add(row);
    11. }
    12. return out;
    13. }
    14. public static void main(String[] args) {
    15. Solution sol = new Solution();
    16. int[][] grid = { { 3, 8, 1, 9 }, { 19, 7, 2, 5 }, { 4, 6, 11, 10 }, { 12, 0, 21, 13 } };
    17. int k = 4;
    18. System.out.println(sol.shiftGrid(grid, k));
    19. }

    }

发表评论

表情:
评论列表 (有 0 条评论,80人围观)

还没有评论,来说两句吧...

相关阅读