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:
[4,5,6,7,0,1,2] if it was rotated 4 times.[0,1,2,4,5,6,7] if it was rotated 7 times.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]].
Given the sorted rotated array nums of unique elements, return the minimum element of this array.
You must write an algorithm that runs in O(log n) time.
Input: nums = [3,4,5,1,2]
Output: 1
Explanation: The original array was [1,2,3,4,5] rotated 3 times.
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.
Input: nums = [11,13,15,17]
Output: 11Explanation: The original array was [11,13,15,17] and it was rotated 4 times.
n == nums.length1 <= n <= 5000-5000 <= nums[i] <= 5000nums are unique.nums is sorted and rotated between 1 and n times.When thinking about finding the minimum value in a rotated sorted array, a brute-force approach involves simply traversing the entire array and keeping track of the smallest element encountered. This is because a linear scan would allow us to identify the minimum element without any additional logic, albeit not efficiently.
The rotated sorted array still retains some properties of a sorted array. In a non-rotated sorted array, the first element is the smallest. Upon rotation, this property is only minimally affected. Hence, a more efficient approach can leverage binary search, exploiting the array's semi-sorted nature.
left and right, initialized to the start and end of the array respectively.left is less than right, calculate the middle index.right, it means the minimum is to the right of mid.right, it means the minimum is at mid or to the left of mid.left or right pointers accordingly.left will point to the smallest element.