class Solution:
def countSmaller(self, nums: List[int]) -> List[int]:
n = len(nums)
# 返回值
ret = [0] * len(nums)
numsNew = []
for i, num in enumerate(nums):
numsNew.append((i,num))
def merge_sort(arr):
if len(arr) < 2:
return arr
mid = len(arr) // 2
left = merge_sort(arr[:mid])
right = merge_sort(arr[mid:])
return merge(left, right)
def merge(left, right):
tmp = []
i = 0
j = 0
while i < len(left) or j < len(right):
if j == len(right) or i < len(left) and left[i][1] <= right[j][1]:
tmp.append(left[i])
ret[left[i][0]] += j
i += 1
else:
tmp.append(right[j])
j += 1
return tmp
merge_sort(numsNew)
return ret
python归并排序实现右侧小于当前元素个数
猜你喜欢
转载自blog.csdn.net/weixin_42173136/article/details/124761497
今日推荐
周排行