其他分享
首页 > 其他分享> > 33. 搜索旋转排序数组,二分查找某个数

33. 搜索旋转排序数组,二分查找某个数

作者:互联网

 

 

 

 

https://leetcode.cn/problems/search-in-rotated-sorted-array/

 

 

解题思路:

1、数组旋转之后,分成了两个递增区间,所以第一个步骤就是确定mid位置在那个区间里面

2、在比较mid和target的大小,确定target在区间的左边还是右边

3、for循环判断

 

 

 

 

 

 

 

 

 

func search(nums []int, target int) int {
    le:=0
    ri:=len(nums)-1
    for le<=ri{  //注意取等号
        mid:=(le+ri)/2
        if nums[mid]==target{
            return mid
        }

        if nums[mid]>=nums[le]{  //mid位置在前一个递增区间
            if nums[mid]>target&&target>=nums[le]{  //先考虑targe在mid左边的情况
                ri=mid-1
            }else{
                le=mid+1
            }
        }else{//mid在后一个递增区间
            if nums[mid]>target||target>nums[ri]{//先考虑targe在mid左边的情况
                ri=mid-1
            }else{
                le=mid+1
            }
        }
    }
    return -1
}

 

标签:二分,le,target,nums,33,mid,int,查找,ri
来源: https://www.cnblogs.com/-citywall123/p/16412651.html