找到两个差异大于或等于D的元素

时间:2013-11-20 02:23:15

标签: algorithm sorting range

假设你有一个数组

2 6 4 2 9 4 2

你想要找到两个差异大于6的元素。在这种情况下,一个可能的答案是(9,2)。你怎么会在O(N ^ 2)时间内做到这一点?

3 个答案:

答案 0 :(得分:3)

想法.1

1)您对数字O(n lgn)

进行排序

2)如果last和first元素之间的差异是你的数字(6)。你发现了它们(第一个和最后一个元素)。如果差异较小,则没有这样的元素

想法.2

最小和最大元素。如果它们之间的差异小于您的搜索号,则没有这样的元素对。时间:O(n)

答案 1 :(得分:2)

只需扫描最小值和最大值。为O(n)。

答案 2 :(得分:0)

在存储两个数字时,只需循环元素,即到目前为止获得的最小值和最大值。

  • 如果在任何时候,你找到满足条件的那一对,那就是你的答案。
  • 如果到达数组的末尾,则不存在这样的对。

最坏情况时间:O(n)