Java教程

算法打卡Day2(二分查找)

本文主要是介绍算法打卡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(二分查找)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!