代码:
//给定长度为n的单调不下降数列A0,A1,...,An-1和一个数k,求满足Ai>=k条件的最小的i。不存在的情况下输出n
void solve()
{
int a=-1,b=n;
while(b-a>1) //(,],左开右闭区间
{
int mid=a+(b-a)/2;
if(A[mid]>=k)
b=mid;
else
a=mid;
}
printf("%d\n",b);
}
本文介绍了一种高效的算法,用于在一个给定的单调不下降数列中找到第一个大于等于指定值k的元素的索引。通过使用二分查找的方法,该算法能在对数时间内找到满足条件的最小索引,如果不存在则返回数列的长度。
代码:
//给定长度为n的单调不下降数列A0,A1,...,An-1和一个数k,求满足Ai>=k条件的最小的i。不存在的情况下输出n
void solve()
{
int a=-1,b=n;
while(b-a>1) //(,],左开右闭区间
{
int mid=a+(b-a)/2;
if(A[mid]>=k)
b=mid;
else
a=mid;
}
printf("%d\n",b);
}
被折叠的 条评论
为什么被折叠?