我必须编写一个算法,给定一个未排序的整数列表,返回“文件中至少超过文件中数字 90% 的最小数字”,如果不存在这样的数字,则返回 -1。足够简单:我使用合并排序对列表进行排序,然后从 90% 的索引开始,查找第一个数字大于它之前的数字。
问题的第二部分让我难住了。我们得到了更多信息:整数代表工资,这意味着它们都是正数,而且绝大多数都在 1,000,000 以下。显然有了这些额外的信息,就可以编写一个在 O(n) 时间内解决原始问题的算法,但我完全不知道这是如何实现的。有什么想法吗?
我会发布到目前为止我所做的事情,但我还没有想出任何东西。