From a258b46cf0789f41cfe9d68a51d1928a0f508bea Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Fri, 2 Oct 2026 16:01:39 -0400 Subject: [PATCH] docs(content): add Rotate Array page and bump array/math badges --- .../two-pointers/189-rotate-array.mdx | 50 +++++++++++++++++++ .../appendix/(1-data-structures)/array.mdx | 2 +- .../content/appendix/(3-techniques)/math.mdx | 2 +- 3 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 apps/docs/content/(01-linear-structures)/two-pointers/189-rotate-array.mdx diff --git a/apps/docs/content/(01-linear-structures)/two-pointers/189-rotate-array.mdx b/apps/docs/content/(01-linear-structures)/two-pointers/189-rotate-array.mdx new file mode 100644 index 0000000..3caa8d1 --- /dev/null +++ b/apps/docs/content/(01-linear-structures)/two-pointers/189-rotate-array.mdx @@ -0,0 +1,50 @@ +--- +title: '189. Rotate Array' +description: Given an integer array nums, rotate the array to the right by k steps, where k is non-negative +icon: dot +topics: + - { name: "Array", slug: "array" } + - { name: "Math", slug: "math" } + - { name: "Two Pointers", slug: "two-pointers" } +issue: "https://github.com/prdlk/leetcode/issues/47" +sidebar: + label: 'Rotate Array' + badge: 'Medium' +--- + +### 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 <= 10^5` +- `-2^31 <= nums[i] <= 2^31 - 1` +- `0 <= k <= 10^5` +- 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? + +## Solution + +```py +class Solution: + def rotate(self, nums: list[int], k: int) -> None: + N = len(nums) - 1 + cut = k % len(nums) + + def reverse(l, r): + while l <= r: + nums[l], nums[r] = nums[r], nums[l] + l += 1 + r -= 1 + + reverse(0, N) + reverse(0, cut - 1) + reverse(cut, N) +``` diff --git a/apps/docs/content/appendix/(1-data-structures)/array.mdx b/apps/docs/content/appendix/(1-data-structures)/array.mdx index e63f37e..aa1a326 100644 --- a/apps/docs/content/appendix/(1-data-structures)/array.mdx +++ b/apps/docs/content/appendix/(1-data-structures)/array.mdx @@ -3,7 +3,7 @@ title: "Array" list: "https://leetcode.com/problem-list/array/" icon: list-ordered sidebar: - badge: '46' + badge: '47' --- :::note diff --git a/apps/docs/content/appendix/(3-techniques)/math.mdx b/apps/docs/content/appendix/(3-techniques)/math.mdx index 9ed529d..ecde252 100644 --- a/apps/docs/content/appendix/(3-techniques)/math.mdx +++ b/apps/docs/content/appendix/(3-techniques)/math.mdx @@ -3,7 +3,7 @@ title: "Math" list: "https://leetcode.com/problem-list/math/" icon: calculator sidebar: - badge: '6' + badge: '7' --- :::note