Find Minimum in a Rotated Sorted Array

Problem Summary

Similar Problem

What is Being Asked?

Why This Works

Main Concepts Used

Time & Space Complexity

Code

class Solution:
    def findMin(self, nums: List[int]) -> int:
        minSoFar = nums[0]
        l, r = 0, len(nums) - 1
        while l <= r:
            m = (l + r) // 2
            mid = nums[m]
            leftMost = nums[l]
            rightMost = nums[r]

            if mid <= rightMost: # right side is sorted
                minSoFar = min(minSoFar, mid)
                r = m - 1
            else:
                minSoFar = min(minSoFar, leftMost)
                l = m + 1

        return minSoFar

Common Mistakes / Things I Got Stuck On