From e67cc79f3943a712fb56fd25eaecc5466f72158c Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Wed, 26 Aug 2026 15:51:01 -0400 Subject: [PATCH] docs(docs): add MDX documentation for problems 153 and 35 --- ...3-find-minimum-in-rotated-sorted-array.mdx | 55 +++++++++++++++++++ .../(array)/35-search-insert-position.mdx | 51 +++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 apps/docs/content/(array)/153-find-minimum-in-rotated-sorted-array.mdx create mode 100644 apps/docs/content/(array)/35-search-insert-position.mdx diff --git a/apps/docs/content/(array)/153-find-minimum-in-rotated-sorted-array.mdx b/apps/docs/content/(array)/153-find-minimum-in-rotated-sorted-array.mdx new file mode 100644 index 0000000..e4bc0b8 --- /dev/null +++ b/apps/docs/content/(array)/153-find-minimum-in-rotated-sorted-array.mdx @@ -0,0 +1,55 @@ +--- +title: '153. Find Minimum in Rotated Sorted Array' +description: 'Suppose an array of length n sorted in ascending order is rotated between 1 and n times. For example, the array nums = [0,1,2,4,5,6,7] might become:' +sidebar: + label: 'Find Minimum in Rotated Sorted Array' + badge: 'Medium' +--- + +Binary Search + +::::warning +Notice that rotating an array [a[0], a[1], a[2], ..., a[n-1]] 1 time results in the array [a[n-1], a[0], a[1], a[2], ..., a[n-2]]. +:::: + +### Example 1: +- Input: `nums = [3,4,5,1,2]` +- Output: `1` +- Explanation: The original array was `[1,2,3,4,5]` rotated `3` times. + +### Example 2: +- Input: `nums = [4,5,6,7,0,1,2]` +- Output: `0` +- Explanation: The original array was `[0,1,2,4,5,6,7]` and it was rotated `4` times. + +### Example 3: +- Input: `nums = [11,13,15,17]` +- Output: `11` +- Explanation: The original array was `[11,13,15,17]` and it was rotated `4` times. + +### Constraints: + +- `n == nums.length` +- `1 <= n <= 5000` +- `-5000 <= nums[i] <= 5000` +- All the integers of `nums` are unique. +- `nums` is sorted and rotated between 1 and `n` times. + +## Solution + +```py +class Solution: + def findMin(self, nums: List[int]) -> int: + l, r = 0, len(nums) - 1 + lowest_index = -1 + + while l <= r: + m = (l + r) // 2 + if nums[m] <= nums[-1]: + lowest_index = m + r = m - 1 + else: + l = m + 1 + + return nums[lowest_index] +``` diff --git a/apps/docs/content/(array)/35-search-insert-position.mdx b/apps/docs/content/(array)/35-search-insert-position.mdx new file mode 100644 index 0000000..889e15a --- /dev/null +++ b/apps/docs/content/(array)/35-search-insert-position.mdx @@ -0,0 +1,51 @@ +--- +title: '35. Search Insert Position' +description: Given a sorted array of distinct integers and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order +sidebar: + label: 'Search Insert Position' + badge: 'Easy' +--- + +Binary Search + +::::warning +You must write an algorithm with O(log n) runtime complexity. +:::: + +### Example 1: +- Input: `nums = [1,3,5,6], target = 5` +- Output: `2` + +### Example 2: +- Input: `nums = [1,3,5,6], target = 2` +- Output: `1` + +### Example 3: +- Input: `nums = [1,3,5,6], target = 7` +- Output: `4` + +### Constraints: + +- `1 <= nums.length <= 10^4` +- `-10^4 <= nums[i] <= 10^4` +- `nums` contains distinct values sorted in ascending order. +- `-10^4 <= target <= 10^4` + +## Solution + +```py +class Solution: + def searchInsert(self, nums: List[int], target: int) -> int: + l, r = 0, len(nums) - 1 + + while l <= r: + m = (l + r) // 2 + if nums[m] == target: + return m + elif nums[m] < target: + l = m + 1 + elif nums[m] > target: + r = m - 1 + + return (l + r) // 2 + 1 +```