思路可以反过来,既然要看某个数字,在他之后有多少个数字比他小,那么我们从后往前建立list,并且用bisect的方式左边插入,其插入位置左侧有多少的数字,就是原来的list中,这个数字右侧有多少数字比他小。
class Solution:
def countSmaller(self, nums: List[int]) -> List[int]:
res = [0]*len(nums)
arr = []
for i in range(len(nums)-1, -1,-1):
index = bisect.bisect_left(arr, nums[i])
arr.insert(index, nums[i])
res[i] = index
return res