算法打卡Day2(二分查找)

二分查找

1.查找第一个大于等于target的值

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。
如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
int searchInsert(vector<int>& nums, int target) {
        int l=0,r=nums.size()-1,mid;
        while(l<=r){
            mid=l+(r-l)>>1;
            if(nums[mid]>=target)
                r=mid-1;
            else
                l=mid+1;
        }
        return l;  //return r; 就是最后一个小于target的值
    }

查找第一个大于target的值

int searchInsert(vector<int>& nums, int target) {
        int l=0,r=nums.size()-1,mid;
        while(l<=r){
            mid=l+(r-l)>>1;
            if(target<nums[mid])
                r=mid-1;
            else
                l=mid+1;
        }
        return l; //return r;就是最后一个小于等于target的值
    }

二分答案

while(l<=r){
	int mid=l+(r-l)>>1;
	if(judge(mid)){
		ans=mid;
		l=mid+1;
	}
	else
		r=mid-1;
}
return ans;
上一篇:day2-2 标识符/数据类型


下一篇:Day2.数据类型、类型转换