【发布时间】:2017-02-08 16:42:11
【问题描述】:
我在 find 中遇到了一个编程问题,我必须在给定的未排序数组中找到所有对,这样
|i - j| <= K and |A[i] - A[j]| <= x
例如:
A = {5,4,8,3} and x = 3 and k = 2.
回答:(5,4), (5,8), (4,3)
我尝试了很多次,但想不出任何时间复杂度低于O(nk)的算法。我也尝试过平衡二叉树,但它对我没有帮助。
编辑:如果我们必须找出这样的对是否存在于数组中(这意味着只有一对),我们能做点好事吗?
【问题讨论】:
-
考虑到输出大小本身可以是
O(nk),对于最坏情况的性能,你不会比O(nk)更好。例如,考虑以下数组:[1,1,1,....,1]与任何x。 -
谢谢stackoverflow.com/users/572670/amit。如果我必须找出是否存在这样的一对,我们能做得更好吗?
标签: arrays algorithm time-complexity computer-science