Short and simple solution || Fully explained || Beats 100%
(Please upvote\uD83D\uDE00 Thank\'s!)\n# Intuition\nYou can look at it like this:\nWe are looking for the beginning of the lower part of the numbers.\nAt first 
##### (Please upvote\uD83D\uDE00 Thank\'s!)\n# Intuition\nYou can look at it like this:\nWe are looking for the **beginning of the lower part** of the numbers.\nAt first we choose the middle of the array, and check whether the part from it to the **right** is arranged in ascending order.\nIf so, this means that the minimal number is either the first number in this part, or it is in the second part, so we will change **right** to be the first number in this part, because we no longer have anything to check in the part between the original **right** and the **middle**.\nIf not, this means that the lowest number is indeed inside this part, so we will make **left** the first number of this part, because we no longer have anything to check the part between the original **left** and the **middle**.\nWhen we reach a situation where left and right are equal, it means that we have reached exactly the lowest number in the lowest part of the array, which is the minimum number we wanted.\n\n# Complexity\n- Time complexity:\n$$O(log(n))$$\n\n- Space complexity:\n$$O(1)$$\n\n# Code\n```\nclass Solution {\n    public int findMin(int[] nums) {\n        \n        int left = 0, right = nums.length -1, middle;\n\n        while(left < right){\n            middle = (left + right) / 2;\n            if(nums[middle] < nums[right]) right = middle;\n            else left = middle + 1;\n        }\n\n        return nums[left];\n    }\n}\n```\n![LeetCode](https://assets.leetcode.com/users/images/6198d926-527c-42f7-a663-aaf8d62ed44c_1704980133.0159707.png){:style=\'width:300px\'}
['Array', 'Binary Search', 'Java']