【发布时间】:2020-01-28 12:57:25
【问题描述】:
给定一个整数数组。如果数字 a 及其否定 -a 都存在于数组中,则打印它。例如:如果给出 {10, 5, 0, 9, -10, 7, -5},则打印 10, 5。 我给了面试官 O(N) 时间和 O(N) 基于 HashMap 的空间复杂度代码,但他进一步要求我在最坏的情况下将空间复杂度降低到 O(1),保持时间复杂度 O(N)。 注意:不允许计数排序。 请问,谁能给我提供 O(1) 空间复杂度的方法?
【问题讨论】:
-
添加标签以指定您希望使用哪种语言回答。同时添加您拥有的解决方案。
-
觉得不可能
-
如果数字很小,您可以使用位掩码来跟踪项目。
-
负值总是最后出现吗?
-
使用正数的二进制 trie 是一种解决方案吗?
标签: java arrays algorithm time-complexity space-complexity