From da5d790d1633fef8fddf97505eb04bef622b2c42 Mon Sep 17 00:00:00 2001 From: Sangeeth Sudheer Date: Mon, 4 Apr 2022 22:30:14 +0530 Subject: [PATCH] feat(189-rotate-array): add py3 solution --- 0189_rotate-array/README.md | 31 ++++++++++++++++++++++++ 0189_rotate-array/python3/extra_space.py | 16 ++++++++++++ 0189_rotate-array/python3/solution.py | 0 3 files changed, 47 insertions(+) create mode 100644 0189_rotate-array/README.md create mode 100644 0189_rotate-array/python3/extra_space.py create mode 100644 0189_rotate-array/python3/solution.py diff --git a/0189_rotate-array/README.md b/0189_rotate-array/README.md new file mode 100644 index 0000000..ce63932 --- /dev/null +++ b/0189_rotate-array/README.md @@ -0,0 +1,31 @@ +Given an array, rotate the array to the right by `k` steps, where `k` is non-negative. + +**Example 1:** + + Input: nums = [1,2,3,4,5,6,7], k = 3 + Output: [5,6,7,1,2,3,4] + Explanation: + rotate 1 steps to the right: [7,1,2,3,4,5,6] + rotate 2 steps to the right: [6,7,1,2,3,4,5] + rotate 3 steps to the right: [5,6,7,1,2,3,4] + + +**Example 2:** + + Input: nums = [-1,-100,3,99], k = 2 + Output: [3,99,-1,-100] + Explanation: + rotate 1 steps to the right: [99,-1,-100,3] + rotate 2 steps to the right: [3,99,-1,-100] + + +**Constraints:** + +* `1 <= nums.length <= 105` +* `-231 <= nums[i] <= 231 - 1` +* `0 <= k <= 105` + +**Follow up:** + +* Try to come up with as many solutions as you can. There are at least **three** different ways to solve this problem. +* Could you do it in-place with `O(1)` extra space? \ No newline at end of file diff --git a/0189_rotate-array/python3/extra_space.py b/0189_rotate-array/python3/extra_space.py new file mode 100644 index 0000000..c65735b --- /dev/null +++ b/0189_rotate-array/python3/extra_space.py @@ -0,0 +1,16 @@ +# Time: O(N) +# Space: O(N) +class Solution: + def rotate(self, nums: List[int], k: int) -> None: + """ + Do not return anything, modify nums in-place instead. + """ + n = len(nums) + result = [None] * n + + for i, num in enumerate(nums): + new_i = (i + k) % n + result[new_i] = num + + for i, num in enumerate(nums): + nums[i] = result[i] diff --git a/0189_rotate-array/python3/solution.py b/0189_rotate-array/python3/solution.py new file mode 100644 index 0000000..e69de29