今天我看到了当地信息学奥林匹克竞赛的最新考试,发现了一个有趣的问题。简单来说,它要求给定一个整数数组,计算它有多少个逆序对,其中逆序对是一对索引 i 和 j ,使得 i > j并且。通俗地说,逆序对的数量是无序对的数量。最初,我想到了一个O(n²)的解决方案(是的,是朴素的),但是看到它不适合输入的大小,我更加深入地思考了这个问题,然后我意识到可以通过归并排序的变体在
但是看到输入约束(
O(n log n)
的时间内处理好输入的大小。但是看到输入约束(
n
介于 1和M
之间的整数,并且没有重复项),我想知道我的解决方案是否最优,或者您是否知道是否还有其他解决方案可以击败 O(n log n)
的运行时间?