给定一个整数数组,返回一个新数组,其中新数组中的每个元素都是原始输入数组中该元素右侧的较小元素的数量。例如,给定数组 [3, 4, 9, 6, 1],返回 [1, 1, 2, 1, 0]。
import bisect
nums = list(input().split())
nums_to_the_right = []
result = []
sorted_nums = []
for num in reversed(nums):
index = bisect.bisect_left(sorted_nums, num)
result.append(index)
bisect.insort(sorted_nums, num)
result.reverse()
print(result)
此代码打印正确的结果。bisect_left 函数应返回索引,当前元素必须具有该索引才能使数组排序。insort 函数将元素放入数组中,使数组保持排序状态。我希望整段代码具有 O(n^2) 复杂性,但据说需要 O(nlogn) 才能工作。请告诉我,为什么?