From 7bf796913fa76313bde2358c99cd4cd392e4dd22 Mon Sep 17 00:00:00 2001 From: Sangeeth Sudheer Date: Tue, 12 Apr 2022 00:32:26 +0530 Subject: [PATCH] feat(1386_shift-2d-grid): add py3 soln --- 1386_shift-2d-grid/README.md | 40 ++++++++++++++++++++++++ 1386_shift-2d-grid/python3/simulation.py | 21 +++++++++++++ 1386_shift-2d-grid/python3/solution.py | 0 3 files changed, 61 insertions(+) create mode 100644 1386_shift-2d-grid/README.md create mode 100644 1386_shift-2d-grid/python3/simulation.py create mode 100644 1386_shift-2d-grid/python3/solution.py diff --git a/1386_shift-2d-grid/README.md b/1386_shift-2d-grid/README.md new file mode 100644 index 0000000..d2a6395 --- /dev/null +++ b/1386_shift-2d-grid/README.md @@ -0,0 +1,40 @@ +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. + +**Example 1:** + +![](https://assets.leetcode.com/uploads/2019/11/05/e1.png) + + Input: grid = [[1,2,3],[4,5,6],[7,8,9]], k = 1 + Output: [[9,1,2],[3,4,5],[6,7,8]] + + +**Example 2:** + +![](https://assets.leetcode.com/uploads/2019/11/05/e2.png) + + Input: grid = [[3,8,1,9],[19,7,2,5],[4,6,11,10],[12,0,21,13]], k = 4 + Output: [[12,0,21,13],[3,8,1,9],[19,7,2,5],[4,6,11,10]] + + +**Example 3:** + + Input: grid = [[1,2,3],[4,5,6],[7,8,9]], k = 9 + Output: [[1,2,3],[4,5,6],[7,8,9]] + + +**Constraints:** + +* `m == grid.length` +* `n == grid[i].length` +* `1 <= m <= 50` +* `1 <= n <= 50` +* `-1000 <= grid[i][j] <= 1000` +* `0 <= k <= 100` \ No newline at end of file diff --git a/1386_shift-2d-grid/python3/simulation.py b/1386_shift-2d-grid/python3/simulation.py new file mode 100644 index 0000000..02fcee8 --- /dev/null +++ b/1386_shift-2d-grid/python3/simulation.py @@ -0,0 +1,21 @@ +# Time: O(k · m · n) +# Space: O(1) +class Solution: + def shiftGrid(self, grid: List[List[int]], k: int) -> List[List[int]]: + # Simulation approach, we shift the 2D grid one time, k times + # This is acceptable for low values of k (given k <= 100) + rows, cols = len(grid), len(grid[0]) + + for _ in range(k): + # Assume this is the first shift. When we finish shifting all + # elements, the first item in the resulting grid will be the + # last item from the original grid. + prev = grid[-1][-1] + + for i in range(rows): + for j in range(cols): + tmp = grid[i][j] + grid[i][j] = prev + prev = tmp + + return grid diff --git a/1386_shift-2d-grid/python3/solution.py b/1386_shift-2d-grid/python3/solution.py new file mode 100644 index 0000000..e69de29