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)