bisect_left和bisect_right的区别
老是忘记这两的区别,特此记录。
bisect_left(a, x)
返回数组a
中第一个大于等于x的下标i
,如果不存在(x
比a
中最大的数都大)那么返回len(a)
可以用来判断数组a
中大于等于x
的数是否存在
1 | i = bisect_left(a, x) |
bisect_right(a, x)
返回数组a
中第一个大于x
的下标,如果不存在返回len(a)
比如 a = [1,2,2,2,3]
bisect_left(a, 2) 返回 1
bisect_right(a, 2) 返回 4
例题
220. 存在重复元素 III
给你一个整数数组 nums
和两个整数 indexDiff
和 valueDiff
。
找出满足下述条件的下标对 (i, j)
:
i != j
,abs(i - j) <= indexDiff
abs(nums[i] - nums[j]) <= valueDiff
如果存在,返回 true
;否则,返回 false
。
代码
1 | from sortedcontainers import SortedList |