如何找到距给定点的距离小于或等于整数 n 的所有数字
how to find all numbers that there distance from given point are less or equall to integer n
给定一组点 D 和一些数字 K,我想找到 D 中的所有数字,使得 K 与任何找到的数字之间的距离小于或等于整数 N?
示例:
假设我们有 D={5,9,0,6,7} 和 K=8 和 N=1 那么结果应该是 {9,7}
我正在考虑使用 k-d 树或 VP 树,但据我所知(如果我错了请纠正我)找到最近的邻居并且不关心我示例中的 N。
总结所有评论:
解决这个问题,因为蛮力将花费 O(n)
时间迭代 D 中的每个元素,并检查它与 k
的距离是否小于 n
.
你有大数据集但是很多查询最好在 D 上做预处理(使用 O(nlogn)
你可以在 O(logn)
中得到答案 -> 通过排序 D作为预处理(在 O(nlogn)
中作为数组的酒窝排序。
现在,在给定的查询中搜索 k
- 请注意,如果数字缺失,二分搜索将停止,但 do 会在最接近的值处停止。从该索引开始传播到 D 的两侧,并且每次检查是否仍在 n
范围内。注意 allow 中的传播,因为它包含 O(|output|)
.
在您的示例中:已排序 D
产量:[0,5,6,7,9]
。尝试查找 k=8
会给出 false 但索引为 3 或 4(取决于实现)。假设是 return 索引 3。对于 3 直到最后一个索引检查是否 arr[i] - k < n
如果是这样打印 - 如果更大 stop。对于另一边检查 k - arr[i] < n
- 如果是这样打印,如果更大 stop -> 这会给你 7,9
希望对您有所帮助!
给定一组点 D 和一些数字 K,我想找到 D 中的所有数字,使得 K 与任何找到的数字之间的距离小于或等于整数 N?
示例: 假设我们有 D={5,9,0,6,7} 和 K=8 和 N=1 那么结果应该是 {9,7}
我正在考虑使用 k-d 树或 VP 树,但据我所知(如果我错了请纠正我)找到最近的邻居并且不关心我示例中的 N。
总结所有评论:
解决这个问题,因为蛮力将花费 O(n)
时间迭代 D 中的每个元素,并检查它与 k
的距离是否小于 n
.
你有大数据集但是很多查询最好在 D 上做预处理(使用 O(nlogn)
你可以在 O(logn)
中得到答案 -> 通过排序 D作为预处理(在 O(nlogn)
中作为数组的酒窝排序。
现在,在给定的查询中搜索 k
- 请注意,如果数字缺失,二分搜索将停止,但 do 会在最接近的值处停止。从该索引开始传播到 D 的两侧,并且每次检查是否仍在 n
范围内。注意 allow 中的传播,因为它包含 O(|output|)
.
在您的示例中:已排序 D
产量:[0,5,6,7,9]
。尝试查找 k=8
会给出 false 但索引为 3 或 4(取决于实现)。假设是 return 索引 3。对于 3 直到最后一个索引检查是否 arr[i] - k < n
如果是这样打印 - 如果更大 stop。对于另一边检查 k - arr[i] < n
- 如果是这样打印,如果更大 stop -> 这会给你 7,9
希望对您有所帮助!