LeetCode题解1260. 二维网格迁移

给你一个 n 行 m 列的二维网格 grid 和一个整数 k。你需要将 grid 迁移 k 次。

每次「迁移」操作将会引发下述活动:

位于 grid[i][j] 的元素将会移动到 grid[i][j + 1]。

位于 grid[i][m - 1] 的元素将会移动到 grid[i + 1][0]。

位于 grid[n - 1][m - 1] 的元素将会移动到 grid[0][0]。

请你返回 k 次迁移操作后最终得到的 二维网格。

示例 1:

![](https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2019/11/16/e1-1.png)

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

输出:[[9,1,2],[3,4,5],[6,7,8]]

示例 2:

![](https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2019/11/16/e2-1.png)

输入: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]]

提示:

1 <= grid.length <= 50

1 <= grid[i].length <= 50

-1000 <= grid[i][j] <= 1000

0 <= k <= 100

![](https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2019/11/16/e1-1.png)

题目地址: https://leetcode-cn.com/problems/shift-2d-grid/description/

题解:Java题解 简单明了

由于题中数组长度范围较小,因此为了代码简洁直观,将该问题转化为一维数组的rotate问题最后存入List中,感兴趣的同学可以不需要申请临时一维数组,直接操作下标进行处理。
``` java
public List<List> shiftGrid(int[][] grid, int k) {

int[] oneDim = new int[grid.length * grid[0].length];
int idx = 0;
for (int i = 0; i < grid.length; i++)
for (int j = 0; j < grid[0].length; j++)
oneDim[idx++] = grid[i][j];

k %= oneDim.length;
reverse(oneDim, 0, oneDim.length - k - 1);
reverse(oneDim, oneDim.length - k, oneDim.length - 1);
reverse(oneDim, 0, oneDim.length - 1);

idx = 0;
List<List> res = new ArrayList();
List oneRow = new ArrayList();
for (int i = 0; i < oneDim.length; i++) {

if (i > 0 && i % grid[0].length == 0) {

res.add(oneRow);
oneRow = new ArrayList();
}

oneRow.add(oneDim[i]);
}
res.add(oneRow);

return res;
}

public void reverse(int[] arr, int start, int end) {

while (start < end) {

int tmp = arr[start];
arr[start] = arr[end];
arr[end] = tmp;
start++;
end--;
}
}
```

LeetCode题解1260.shift-2d-grid

题目地址(1260. 二维网格迁移) https://leetcode-cn.com/problems/shift-2d-grid/description/ 题目描述 给你一个 n 行 m 列的二维网格 grid 和一个整数 k。你需要将 grid 迁移 k 次。 每次「迁移」操作将会引发下述活动: 位于 grid[i][j] 的元素将会移动到 grid[i…

Java中的“ <<”运算符 - java

最喜欢的语句来自Java的Character类:(1 << Character.PARAGRAPH_SEPARATOR)) >> type PARAGRAPH_SEPARATOR是字节,type是整数。这句话中的操作员,他们做什么?如何以及在哪里可以使用这些运算符?这是oracles java.lang.Character文档。该类中…

LeetCode题解计算机为什么是基于二进制的?

可以是三进制么?二进制有什么好处?题解:为什么叫电子计算机?算盘应该没有二进制

LeetCode题解深度优先遍历和回溯的关系?

深度优先遍历的范围更大还是回溯的范围更大?为什么?题解:我的理解是:dfs是回溯思想的一种体现- 回溯:是在整个搜索空间中搜索出可行解,在搜索过程中不断剪枝回退,这是回溯的思想,这个搜索空间并没有限制于特定的数据结构。- dfs:dfs是指特定的数据结构中如图,树(特殊的图)中搜索答案,范围限制在了特定的数据结构。个人拙见。

LeetCode题解盲人买袜子。

他们都各自买了两对黑袜和两对白袜,八对袜子的布质、大小完全相同,而每对袜子都有一张商标纸连着。两位盲人不小心将八对袜子混在一起。他们每人怎样才能取回黑袜和白袜各两对呢?题解:暴力破解, 把袜子都拆开 一人一只 哈哈