我必须编写一个算法,给定一个未排序的整数列表,返回“文件中超过文件中至少 90% 的数字的最小数字”,如果不存在这样的数字,则返回 -1。很简单:我使用归并排序对列表进行排序,然后从 90% 的索引处开始,并寻找第一个大于它之前的数字的数字。
问题的第 2 部分让我很困惑。我们得到了更多信息:整数代表薪水,这意味着它们都是正数,其中绝大多数都在 1,000,000 以下。显然,有了这些额外的信息,就可以编写一个在 O(n) 时间内解决原始问题的算法,但我一点也不知道这是怎么可能的。有任何想法吗?
我会发布我到目前为止所做的事情,但我无法提出任何建议。