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;
}

相关文章:

  • 2021-09-10
  • 2022-12-23
  • 2021-09-12
  • 2022-01-07
  • 2021-08-08
  • 2021-08-15
猜你喜欢
  • 2021-05-27
  • 2021-09-04
  • 2021-10-17
  • 2021-07-22
  • 2021-09-13
  • 2022-03-07
相关资源
相似解决方案