Without min comparison | Detailed explanation
Intuition\nGiven that we should use binary search to find the minimum element in the rotated sorted array.\nAs all binary search problems, we have two pointers:
# Intuition\nGiven that we should **us**e **bi**nary **se**arch to **fi**nd **th**e **mi**nimum **el**ement in the **ro**tated **so**rted **ar**ray.\nAs all binary search problems, we have **tw**o **po**inters: \'low\' and \'high\', and we find \'mid\' using \'low\' and \'high\'.\n\nOur **main objective** here is to find the direction of traversal since we do not have an idea on the number of rotations. \n\n# Approach\n1. Initialize `low = 0 and high = len(nums) - 1`.\n2. Iterate until `low <= high`.\n3.  We can find whether the array has been rotated or not using\n    `nums[low] <= nums[high]` <br>\nFor example, here the `array is not rotated` and hence nums[low] < nums[high]\n![Screenshot 2023-04-14 at 9.17.53 PM.png](https://assets.leetcode.com/users/images/61b1d8a3-27fb-4ad1-86fe-08792b9f82a6_1681521526.6889758.png)\nHere, we see that nums[low] > nums[high]. Therefore, the `array is rotated`.\n![Screenshot 2023-04-14 at 9.17.59 PM.png](https://assets.leetcode.com/users/images/21248ae2-d8a4-4670-a261-ecce68e9ba17_1681521508.3837793.png)\n\n4. If the **ar**ray is **not rotated**, `return nums[low]`.\n5. If the **ar**ray is **rotated**, we will have to now **fi**nd the **di**rection of **tr**aversal from \'mid\'.\n6. Calculate `mid = (low + high)//2`\n7. Based on the **c**omparison **be**tween **nums[low]** and **nums[mid]**, we can determine whether we have to move left or right from mid.\n![Screenshot 2023-04-14 at 9.39.31 PM.png](https://assets.leetcode.com/users/images/e677f3c5-110d-412f-b77e-5197e1579659_1681522824.6154144.png)\n8. If `nums[low] > nums[mid]: high = mid`\n9. Else ` low = mid + 1`\n\n\n# Complexity\n- Time complexity: O(logN)\n\n- Space complexity: O(1)\n\n# Code\n```\nclass Solution:\n    def findMin(self, nums: List[int]) -> int:\n\n        # Initialize low and high\n        low, high = 0, len(nums) - 1\n\n        # Iterate until low <= high\n        while low <= high:\n\n            # Check if the array is not rotated\n            if nums[low] <= nums[high]:\n                # Return nums[low] when the array is not rotated\n                return nums[low]\n\n            # Initialize mid if the array is rotated\n            mid = (low + high)//2\n\n            # Check the direction of traversal, \n            # refer the image for explanation\n            if nums[low] > nums[mid]:\n                high = mid\n            else:\n                low = mid + 1\n```
['Array', 'Binary Search', 'Python3']