0
点赞
收藏
分享

微信扫一扫

c++二分查找

夹胡碰 2022-04-16 阅读 59
c++
class Solution {
public:
 
    int search(vector<int>& nums, int target) {
        // write code here
        int len=nums.size();
        
        if(len==0)
        {
            return -1;
        }
        int l=0,r=len-1;
        while(l<=r)
        {
            int m=(r+l)/2;
            if(nums[m]==target){
                return m;
            }else if(nums[m]>target){//tar在左边
                r=m-1;
                
            }else{
                l=m+1;
            }
        }
        return -1;
        
        
    }
};

请实现无重复数字的升序数组的二分查找

给定一个 元素升序的、无重复数字的整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标(下标从 0 开始),否则返回 -1

数据范围:0 \le len(nums) \le 2\times10^50≤len(nums)≤2×105 , 数组中任意值满足 |val| \le 10^9∣val∣≤109

进阶:时间复杂度 O(\log n)O(logn) ,空间复杂度 O(1)O(1)

示例1

输入:

[-1,0,3,4,6,10,13,14],13

复制返回值:

6

复制说明:

13 出现在nums中并且下标为 6     

示例2

输入:

[],3

复制返回值:

-1

复制说明:

nums为空,返回-1     

示例3

输入:

[-1,0,3,4,6,10,13,14],2

复制返回值:

-1

复制说明:

2 不存在nums中因此返回 -1     
举报

相关推荐

0 条评论