321
社区成员




给定一个非降序的整数数组,数组中包含重复数字(重复数字很多) ,给定任意整数,对数组进行二分查找,返回数组正确的位置,给出函数实现。
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)