English 中文(简体)
发现数量之差是一阵列中的一种投入价值k
原标题:find pair of numbers whose difference is an input value k in an unsorted array
最佳回答

你可以在O(n)以黑板表做。 减去O(n)的斜线上的所有数字,然后再一次看<代码>编号[i]+。 在O(1),哈希表格中“Yes”或“No”的回报,你需要从所有数字上来,因此总数是O(n)。 任何包含O(1)设置和O(1)检查时间的固定结构,都将不采用黑板表。

问题回答

O(n* Carlo(n)的一个简单解决办法是打平你的阵列,然后穿过你的阵列,履行这一职能:

void find_pairs(int n, int array[], int k)
{
  int first = 0;
  int second = 0;
  while (second < n)
  {
    while (array[second] < array[first]+k)
      second++;
    if (array[second] == array[first]+k)
      printf("%d, %d
", array[first], array[second]);
    first++;
  }
}

这种解决办法没有使用与解决办法不同的额外空间。

One thing may be done using indexing in O(n)

  • Take a boolean array arr indexed by the input list.
  • For each integer i is in the input list then set arr[i] = true
  • Traverse the entire arr from the lowest integer to the highest integer as follows:
    • whenever you find a true at ith index, note down this index.
    • see if there arr[i+k] is true. If yes then i and i+k numbers are the required pair
    • else continue with the next integer i+1




相关问题
How to add/merge several Big O s into one

If I have an algorithm which is comprised of (let s say) three sub-algorithms, all with different O() characteristics, e.g.: algorithm A: O(n) algorithm B: O(log(n)) algorithm C: O(n log(n)) How do ...

Grokking Timsort

There s a (relatively) new sort on the block called Timsort. It s been used as Python s list.sort, and is now going to be the new Array.sort in Java 7. There s some documentation and a tiny Wikipedia ...

Manually implementing high performance algorithms in .NET

As a learning experience I recently tried implementing Quicksort with 3 way partitioning in C#. Apart from needing to add an extra range check on the left/right variables before the recursive call, ...

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

Enumerating All Minimal Directed Cycles Of A Directed Graph

I have a directed graph and my problem is to enumerate all the minimal (cycles that cannot be constructed as the union of other cycles) directed cycles of this graph. This is different from what the ...

Quick padding of a string in Delphi

I was trying to speed up a certain routine in an application, and my profiler, AQTime, identified one method in particular as a bottleneck. The method has been with us for years, and is part of a "...

热门标签