【发布时间】:2018-05-19 23:32:18
【问题描述】:
最近在一次采访中被问到了以下问题
- 给你一个整数数组,所有元素重复两次,除了一个元素只出现一次,你需要找到具有 O(nlogn) 时间复杂度的唯一元素。假设数组是{2,47,2,36,3,47,36},这里的输出应该是3。我告诉我们可以执行归并排序(因为它需要(nlogn)),然后我们可以检查下一个元素,但他说它将需要 O(nlogn)+O(n)。我还告诉我们可以使用 HashMap 来保持元素的数量,但他再次说不,因为我们必须再次迭代 hashmap 才能获得结果。经过一番研究,我知道使用异或运算会在 O(n) 中给出输出。除了排序之外,还有什么更好的解决方案可以在 O(nlogn) 时间内给出答案吗?
- 当我们使用智能手机时,我们可以一次打开许多应用程序。当我们查看当前打开的所有应用程序时,我们会看到一个列表,其中最近打开的应用程序位于最前面,我们可以从列表中的任何位置删除或关闭应用程序。 java中有一些可用的集合,可以非常有效地执行所有这些任务。我告诉我们可以使用 LinkedList 或 LinkedHashMap 但他不相信。最好的 Collection 是什么?
【问题讨论】:
标签: java arrays sorting collections time-complexity