153. 寻找旋转排序数组中的最小值 Find Minimum in Rotated Sorted Array

题目 <https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/>

自己画图分析了一下,主要有两种情况

nums[left] > nums[right] > nums[mid]

nums[mid] > nums[left] > nums[right]

int findMin(int* nums, int numsSize){
    int left,right,mid;
    left = 0;right = numsSize-1;
    while(left!=right){
        mid = left+(right-left)/2;
        if(nums[left] > nums[right])
        {
            if(nums[mid] >= nums[left])//注意这里,mid有可能等于left
            {
                left = mid+1;
            }
            else //if(nums[mid] < nums[right])
            {
                right = mid;
            }
        }
        else //if(nums[left]<nums[right])
        {
            break;
        }
    }
    return nums[left];
}

猜你喜欢

转载自blog.csdn.net/ZRXSLYG/article/details/112169507
今日推荐