算法

(归并排序)

这是一道比较经典的区间统计问题,暴力做法是枚举所有区间,然后判断是否是连号区间,时间复杂度 $O(n^3)$ 显然会超时。

我们可以考虑用分治的思想来优化这个时间复杂度,具体来说,可以使用归并排序,记录每个区间内的连号区间数量,然后在归并的时候计算跨越左右两个区间的连号区间数量。

时间复杂度

归并排序的时间复杂度是 $O(n \log n)$,每个区间内的连号区间数量可以在 $O(n)$ 时间内计算,因此总时间复杂度是 $O(n \log n)$。

C++ 代码

时间复杂度 $O(n \log n)$


原文地址: http://www.cveoy.top/t/topic/bCmV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录