Binary Search
\nclass Solution {\n    public int findMin(int[] nums) {\n        int left = 0, right = nums.length - 1;\n        while (left < right) {\n            if (nums[l
```\nclass Solution {\n    public int findMin(int[] nums) {\n        int left = 0, right = nums.length - 1;\n        while (left < right) {\n            if (nums[left] < nums[right]) { // Sorted as a whole\n                return nums[left];\n            }\n            int mid = left + (right - left) / 2;\n            if (nums[mid] > nums[right]) { // Unsorted right half\n                left = mid + 1;\n            } else { // Unsorted left half\n                left++;\n                right = mid;\n            }\n        }\n        return nums[left];\n    }\n}\n```
[]