把mid和nums[0]对比来缩小区间,防止最后nums是升序的,最后加了一个判断nums[0] < nums[l] 是否成立。

    1. class Solution {
    2. public:
    3. int findMin(vector<int>& nums) {
    4. if(!nums.size()) return 0;
    5. int l = 0, r = nums.size() - 1;
    6. while(l < r)
    7. {
    8. int mid = (l + r) >> 1;
    9. // cout << mid << endl;
    10. if(nums[0] <= nums[mid])//这里的比较
    11. l = mid + 1;
    12. else r = mid;
    13. }
    14. return nums[0] < nums[l]? nums[0]: nums[l];
    15. }
    16. };

    **