commit c7608fed58e870c99566313ce4994afce2aeda7f
parent 321f23b35ece51614268505a7e41d6baffc88a1e
Author: Jack Sangdahl <jack@pngu.org>
Date: Fri, 15 May 2026 08:37:54 +0300
153. find minimum in rotated sorted array
Diffstat:
2 files changed, 23 insertions(+), 23 deletions(-)
diff --git a/find_min_rotated_arr.c b/find_min_rotated_arr.c
@@ -8,8 +8,8 @@
* algorithm must be o log n time.
*/
-int findMin(int *nums, int nums_size) {
- int low = 0, high = nums_size - 1;
+int findMin(int *nums, int numsSize) {
+ int low = 0, high = numsSize - 1;
while (low < high) {
int mid = low + (high - low) / 2;
if (nums[mid] < nums[high])
@@ -21,9 +21,16 @@ int findMin(int *nums, int nums_size) {
}
int main() {
- int n1[] = {3, 4, 5, 1, 2}, n2[] = {4, 5, 6, 7, 0, 1, 2},
- n3[] = {11, 13, 15, 17};
- printf("%d\n", findMin(n1, ARRAY_SIZE(n1))); // expect: 1
- printf("%d\n", findMin(n2, ARRAY_SIZE(n2))); // expect: 0
- printf("%d\n", findMin(n3, ARRAY_SIZE(n3))); // expect: 11
+ int n1[] = {3, 4, 5, 1, 2};
+ int n2[] = {4, 5, 6, 7, 0, 1, 2};
+ int n3[] = {11, 13, 15, 17};
+ int r1 = findMin(n1, ARRAY_SIZE(n1));
+ int r2 = findMin(n2, ARRAY_SIZE(n2));
+ int r3 = findMin(n3, ARRAY_SIZE(n3));
+ printf("%d\n", r1);
+ assert(r1 == 1);
+ printf("%d\n", r2);
+ assert(r2 == 0);
+ printf("%d\n", r3);
+ assert(r3 == 11);
}
diff --git a/find_min_rotated_arr.py b/find_min_rotated_arr.py
@@ -8,23 +8,16 @@ algorithm must be o log n time.
"""
-class Solution(object):
- def findMin(self, nums):
- """
- :type nums: List[int]
- :rtype: int
- """
- if len(nums) == 1 or nums[0] < nums[-1]:
- return nums[0]
- left, right = 0, len(nums) - 1
- while left <= right:
- mid = left + (right - left) // 2
- if mid > 0 and nums[mid - 1] > nums[mid]:
- return nums[mid]
- if nums[mid] > nums[right]:
- left = mid + 1
+class Solution:
+ def findMin(self, nums: List[int]) -> int:
+ low, high = 0, len(nums) - 1
+ while low < high:
+ mid = low + (high - low) // 2
+ if nums[mid] < nums[high]:
+ high = mid
else:
- right = mid - 1
+ low = mid + 1
+ return nums[low]
if __name__ == "__main__":