标签:二分 le target nums 33 mid int 查找 ri
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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。