查找数组中所有对的时间复杂度

时间:2018-04-06 18:37:36

标签: algorithm

给定一组数字,找到所有唯一的对。

例如,给定[1,4,2,3,3,2,4,1,3,6,6,5,6,6],唯一数字对将分别为1,2和4(每个都出现两次,其中值3出现3次,6出现为2对,因此不是唯一的,4和5只出现一次)。

有没有比O(n)更好的解决方案?

1 个答案:

答案 0 :(得分:2)

在给定的表格中,您可以做的最好是 O(n)。信息理论使这个可以访问。这个论点归结为这样一个事实:如果没有关于序列的元信息,你必须访问每个单独的项目。这通常将 O(n)设置为下限。

如果您有一些现有的描述性数据,例如每个值的预先存在的计数,或者列表中的定位或分布,可能可以降低复杂性。

例如,没有 5,此列表具有第一次出现的值按频率顺序排列的属性:

number freq
  1      2
  4      2
  2      2
  3      3
  6      4

你显然可以利用这个来改善平均情况;一个或两个其他限制也可以使它适用于最坏(可接受)的情况。