---
# System prepended metadata

title: 1260. Shift 2D Grid

---

# 1260. Shift 2D Grid

## 題目概要

給定一個 2D grid 大小 m * n 和一個整數 k，這個 k 代表你需要進行幾次操作。

在一輪操作中：

- grid[i][j] 移動到 grid[i][j + 1]。
- grid[i][n - 1] 移動到 grid[i + 1][0]。
- grid[m - 1][n - 1] 移動到 grid[0][0]。

最後返回操作結束的 grid 結果。

![](https://i.imgur.com/hOTWWcr.png)

## 解題技巧

- 乍一看好像是很難的操作，換來換去的，實際上就是把每個數全部往右移一個位置，要自動換行，所以 grid[m - 1][n - 1] 下一個就是 grid[0][0]；grid[0][1] 下一個就是 grid[0][2]...依此類推。
- 除了 grid[0][0] 和 grid[m - 1][n - 1] 需要單獨操作之外，其他都只需要先把要交換的值先存在 temp 即可。

## 程式碼

```javascript=
/**
 * @param {number[][]} grid
 * @param {number} k
 * @return {number[][]}
 */
var shiftGrid = function(grid, k) {
    const m = grid.length;
    const n = grid[0].length;

    while(k-- > 0) {
        let temp = 0;
        for(let i = 0; i < m; i++) {
            for(let j = 0; j < n; j++) {
               if (i == 0 && j == 0) {
                   temp = grid[i][j];
                   grid[i][j] = grid[m - 1][n - 1];   
               } else {
                   const cur = grid[i][j];
                   grid[i][j] = temp;
                   temp = cur;
               }
            }
        }
    }
    
    return grid;
};
```

![](https://i.imgur.com/eEXgrH1.png)
