原题地址: https://leetcode.com/problems/k-closest-points-to-origin/
有一个平面上一堆点的列表。找到离原点(0,0)最近的K个点。距离用欧几里得距离计算。顺序无所谓。
例一
<strong>输入: </strong>points = [[1,3],[-2,2]], K = 1 <strong>输出: </strong>[[-2,2]] <strong>解释: </strong> (1, 3)和原点的距离是sqrt(10)。 (-2, 2)和原点的距离是sqrt(8)。 因为sqrt(8) < sqrt(10),所以(-2, 2)最接近原点。
例二
<strong>输入: </strong>points = [[3,3],[5,-1],[-2,4]], K = 2 <strong>输出: </strong>[[3,3],[-2,4]]
我的实现方式很简单,建立了一个类distance,包含距离和数组中点的索引。然后一边循环,算出所有的距离,然后根据距离排序,然后输出结果。只需要输出K个元素,用堆来做可能会更快,懒得尝试了。
耗时36 ms快于46.32%的Java代码。
代码地址:https://github.com/tinyfool/leetcode/tree/master/src/p0973
其他排序相关题目,参照排序主题。