1260.三维网格迁移(javascript)Shift2DGrid(leetcode)
原创给你一个 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/
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除