我在面试中遇到了这个问题,最后被告知有一种更高效的方法来做这件事,但我仍然没有能够找到。你正在将一个整数数组和一个表示数组大小的整数传递到一个函数中。在数组中,你有很多数字,其中有一些是重复的,比如
1,7,4,8,2,6,8,3,7,9,10
。你想要将该数组转换成一个新的数组,使所有重复的数字都放在数组的末尾。所以上述数组将变成1,7,4,8,2,6,3,9,10,8,7
。我使用的数字并不重要,而且我不能使用缓冲区数组。我打算使用BST,但必须保持数字的顺序(除了重复数字)。我无法想出如何使用哈希表,所以最终使用了双层循环(O(n^2)的时间复杂度,非常糟糕)。请问如何使用C++更高效地完成这个问题?我不需要代码,只需要一个更好的想法。