1260.三维网格迁移(javascript)Shift2DGrid(leetcode)

原创
小哥 3年前 (2022-11-10) 阅读数 3 #大杂烩

给你一个 m 行 n 柱的二维网格 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 迁移操作后的最终结果。 二维网格。

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

示例 1:

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

示例 2:

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

示例 3:

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

var shiftGrid = function (grid, k) {
    let list = grid.flat(Infinity)//一维阵列
    let len = list.length
    //有两种情况k-比grid的长度len - k;比grid的长度len - len - k % len。
    let index = 0
    if (len > k) {
        index = len - k
    } else {
        index = len - k % len
    }
    //deletedList 对于已删除的阵列
    let deletedList = list.splice(index)
    // list对于删除的数组(原始数组更改),将转换顺序。
    let list1 = [...deletedList, ...list]//list1 是根据需要的一维数组输出
    //将一维数组转换为二维数组并返回。
    let list2 = []
    let n = grid[0].length
    for (let i = 0; i < len; i += n) {
        list2.push(list1.slice(i, i + n))
    }
    return list2
};

var shiftGrid = function (grid, k) {
    let list = grid.flat(Infinity)//一维阵列
    let len = list.length
    //有两种情况k-比grid的长度len - k;比grid的长度len - len - k % len。
    let index = 0
    if (len > k) {
        index = len - k
    } else {
        index = len - k % len
    }
    //deletedList 对于已删除的阵列,list对于已删除的阵列(原始阵列已更改)
    let deletedList = list.splice(index)
    //将删除的部分插入阵列的前面
    list.unshift(...deletedList)
    let list2 = []
    let n = grid[0].length
    for (let i = 0; i < len; i += n) {
        list2.push(list.slice(i, i + n))
    }
    return list2
};

leetcode: https://leetcode.cn/problems/shift-2d-grid/

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除