python 自带二分函数 bisect 的使用

bisect_left, bisect_right需要单独引入,leetcode中已经默认引入了,只需要这两个函数只是返回索引,并没有真的将数**插进去**!,如果target大于所有的数,两个返回的都是n,这也符合实际!
from bisect import bisect_left, bisect_right

a = [0, 0, 1, 2, 2, 3]
# bisect_left返回如果将0插入a中,且维持数组顺序不变的条件下
#    放在最左边的索引。说人话就是a中第一个>=target的数的索引
index_1 = bisect_left(a, 0)

# bisect_right说人话就是a中最后一个>=target的数的索引+1
#  
index_2 = bisect_right(a, 0)  # 注意返回的是实际的加1!


# 注意,可以添加查找范围,[start,end),左闭右开,不要将a变成a[start:end]引进去!拷贝会浪费大量的时间!!!
index_1 = bisect_left(a, 0, start,end)
index_2 = bisect_right(a, 0,start, end)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值