ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-06-25 23:02:47  阅读:171  来源: 互联网

标签:二分 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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有