例如有一个递增数组a=[1,3,5,6,7,9,10,15,18,22],
有三个数5,7,1,21,怎样能快速找到他们的在数组中的区间,返回他前后两个数的位置。
此例中5的返回值是2,3
7的返回值是3,4
1的返回值是0,1
21的返回值是10,11
bisect 二分查找模块:
from bisect import bisect_left
a = [1,3,5,6,7,9,10,15,18,22]
print(bisect_left(a, 5))
直接循环方法:
i = 4
a = [0, 3, 7, 29, 30]
res = 0
while res < len(a) and i >= a[res]:
res += 1
print(i, res)
应该可以用二分法查找。