竞赛
考级
要在一个有序序列中查找第一个大于 xxx 的数,可以使用二分算法。
废话 这道题目要求我们使用二分写法,所有我们不得不使用我们的大脑构件出二分。 相信很多小伙伴们做过用二分求X在A数组中的哪个位置,但是却不知道如何用二分去做求第一个大于X的数的下标,不过这也很简单,只需要使用你聪明智慧的大脑就可以轻松解决。 写题思路 由于用二分去求第一个大于x的数,所以我们需要想如何定义ans。主要思路:如果a[mid]a[mid]a[mid]大于x,那么这个midmidmid就有可能就是第一个大于x的数的下标,可是我们无法确定,不过我们先用ans保存midmidmid(ans初始化为-1),记得赋值rrr变量;而否则的话,我们就使用常规操作将LLL进行赋值,直到退出while循环后,我们的ans要么是-1,要么是第一个大于x的数,因为我们是实时赋值给ans的,范围逐渐缩小就使ans等于第一个大于等于x的数的下标。 AC CODE 哈哈,比AC君的还6 ^{哈哈,比AC君的还6} 哈哈,比AC君的还6
我没用二分查找 因为数列有序,所以只要该位的下一位不等于当前位,那下一位就就是第一个比该位大的第一个数 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 先赞后看养成习惯
很明显,我们可以用upper_bound(用二分查找在数组中给定范围内查找第一个大于目标元素的位置)函数解决这题。
不难,稍微改个条件就可以。
《 能 做 就 行》
我爱玩原神!!代码:
或
用这个必对
这道题非常简单
一个很简单的代码:
提交答案之后,这里将显示提交结果~