lower_bound(大于等于x的第一个数),upper_bound(大于等于x的最后一个数字)

//core code 
int a[10] = { 1,3,5,9,13,16,22,45,48,49 };
//寻找>=x的第一个位置 Find the first position >= x ,from left to right;
int pos(int x,int l,int r)
{
	int mid;
	while (l < r)
	{
		int mid = (r + l) >> 1;
		//为了避免死循环,也可以加1以后在除以2  
		//In order to avoid an infinite loop, 
		//you can also add 1 and then divide by 2
		if (a[mid] >= x) r = mid - 1; 
		//死循环:就是r依然等于r l依然等于l	
		else l = mid + 1;
	}
	//循环结束-  l r停在了结果的前一个位置。
	//End of loop - l r stopped at the previous position of the result.
	cout << r + 1;
	return 1;
}

//从左到右,寻找<=x的第一个位置  
//From left to right, find the first position where <= x
int pos1(int x, int l, int r)
{
	int mid;
	while (l < r)
	{
		int mid = (l + r) >> 1;
		if (a[mid] <= x) l = mid + 1;
		else r = mid - 1;
	}
	cout << l - 1;
	return 1;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-09 13:05
TMD找工作本来就烦,这东西什么素质啊😡
Beeee0927:hr是超雄了,不过也是有道理的
点赞 评论 收藏
分享
屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务