LeetCode--Search in Rotated Sorted Array II

Search in Rotated Sorted Array II

思路:
如同I一样,边界推断是很重要的,注意<=``>=
由于本题是可反复元素,所以 nums[left]<=nums[mid]无法推断为递增。


须要多一个条件推断。跳过反复的元素。

bool search(int* nums, int numsSize, int target) {
    if(numsSize==0) return false;
    int left=0;
    int right= numsSize-1;
    do{
        int mid = (left+right)/2;
        if(nums[mid]==target) return true;

        if(nums[left]<nums[mid]){
            if(nums[left]<=target && target<nums[mid]){
                right = mid-1;
            }else{
                left = mid+1;
            }
        } else if(nums[left]>nums[mid]){
            if(nums[mid]<target && target<=nums[right]){
                left = mid+1;
            }else{
                right = mid-1;
            }
        } else {
            left++;
        }
    }while(left<=right);
    return false;
}
原文地址:https://www.cnblogs.com/yxysuanfa/p/7242850.html