我最近在面试中被问到这个问题,然后失败了,现在正在寻找答案。
假设我有一个由n个整数组成的大数组,所有元素都不同。
如果这个数组是有序的,我可以将它分割为x个更小的数组,每个数组的大小都为y,除了最后一个可能会比y小。然后我可以提取第n个子数组并返回其已排序的结果。
例如:数组 4 2 5 1 6 3。如果y=2,并且我想要第二个数组,则它应该是 3 4。
现在我的做法是简单地对数组进行排序并返回第n个子数组,这需要 O(n log n)
的时间复杂度。但是有人告诉我,有一种方法可以用 O(n + y log y)
的时间复杂度来解决这个问题。我搜索了互联网,但没有找到任何相关信息。有什么想法吗?