[315][困难][线段树][二分] 计算右侧小于当前元素的个数
题目描述
输入:[5,2,6,1]
输出:[2,1,1,0]
解释:
5 的右侧有 2 个更小的元素 (2 和 1)
2 的右侧仅有 1 个更小的元素 (1)
6 的右侧有 1 个更小的元素 (1)
1 的右侧有 0 个更小的元素解题思路
二分查找
class Solution:
def countSmaller(self, nums: List[int]) -> List[int]:
n = len(nums)
res, sorted_nums = [], []
for i in range(n - 1, -1, -1):
num = nums[i]
index = bisect.bisect_left(sorted_nums, num)
res.append(len(sorted_nums[:index]))
sorted_nums.insert(index, num)
return res[::-1]树状数组
相关题目
最后更新于