leetcode 百天解题 - day 02 - 1260 二维网格迁移
题目名称
给你一个 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 次迁移操作后最终得到的 二维网格。
示例
输入:grid = [[1,2,3],[4,5,6],[7,8,9]], k = 1
输出:[[9,1,2],[3,4,5],[6,7,8]]
题解
暴力计算法
这道题相对来说较为简单,从示例可以看出,所谓的移动k个元素,其实就是二维网格内的所有元素同步的移动k个元素,然后和二维数组内元素的总长度求余,所得余数便是二维网格内元素的位置
所以首先最重要的就是将二维网格平铺成为一个一维数组,可以使用数组的 flat
方法,当前也可以使用递归的方式来遍历出二维数组中的所有元素。
将二维数组平铺之后,然后根据传入的k值得出需要平移的元素个数,然后将不需要移动的元素和移动之后的元素拼接成一个新的数组,最后在根据原二维数组的长度得出新的二维数组
答案
1 | var shiftGrid = function(grid, k) { |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment
DisqusValine