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 }
等风起的那一天,我已准备好一切