(每日一练28788)题目名称:查找整数

文盲老顾
WEB应用领新星创作者
博客专家认证
2023-04-19 17:18:43

给定一个非降序的整数数组,数组中包含重复数字(重复数字很多) ,给定任意整数,对数组进行二分查找,返回数组正确的位置,给出函数实现。
a. 连续相同的数字,返回最后一个匹配的位置
b. 如果数字不存在返回 -1。

题目给出的提示已经很明显了,直接二分查找,这个用啥语言编程都一个德性了,没得优化。直接给出一个默认值 -1 ,找到了返回找到的数,没找到就直接返回默认值就可以。

a,b = map(int,input().split())
c = sorted(map(int,input().split()))
l,r,ans = 0,a - 1,-1
while l <= r:
    m = (l + r) // 2
    if c[m] < b:
        l = m + 1
    elif c[m] > b:
        r = m - 1
    else:
        while m + 1 < a and c[m + 1] == b:
            m += 1
        ans = m
        break
print(ans)
...全文
115 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

321

社区成员

发帖
与我相关
我的任务
社区描述
主要用于技术交流,包括但不限于 .net,mssql,js,css,python,算法,运维。也可以晒最新技术,美图,运动等。最后,如果有问题,可以提问,老顾能帮忙的会尽量帮忙哦。
前端sqlserverasp.net 技术论坛(原bbs) 北京·西城区
社区管理员
  • 文盲老顾
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧