解题思路
使用bisect模块,创建新的有序数组,数字在原数组中的位置与新的有序数组中的位置差,即为移动次数。
其中,通过bisect.bisect_left() 返回插入的位置。
通过 bisect.insort()插入数组并排序。
完整代码
import bisect n = int(input()) nums = [] for _ in range(n): nums.append(int(input())) result = 0 lst = [nums[0]] for i in range(1, n): idx = bisect.bisect_left(lst, nums[i]) bisect.insort(lst, nums[i]) result += i - idx print(result) ''' num = sorted(nums) i = 0 while i < n: idx = num.index(nums[i]) i += 1 result += idx num = num[0: idx] + num[idx + 1:] print(result) '''