# 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 結果。  ## 解題技巧 - 乍一看好像是很難的操作,換來換去的,實際上就是把每個數全部往右移一個位置,要自動換行,所以 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; }; ``` 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up