对于给定的点P,简单的解决方案:计算 P 与所有其他点的距离,时间复杂度为 O(n)。将它们保存为元组列表(或类似的数据结构),即(点,距 P 的距离)的元组。遍历列表即可获得前 K 个最接近的点,时间复杂度为 O(n)。第二种解决方案会花费更多的空间复杂度 (O(n^2)) 和随着时间的推移进行维护,但会缩短查找 K 个最近邻居的时间:将每个点的字典保存为按距离排序的点列表(或类似的数据结构) - 构建此表一次的时间复杂度为 O(n^2 * log(n))。查找 K 个最近点的时间复杂度为 O(k) - 字典访问 + 从有序列表中复制 k 个元素。时间复杂度的开销在于以一种保持该数据结构有效的方式添加新点或删除旧点 - 两者都为 O(n*log(n))。您选择的解决方案应该针对您想要优化的内容