-
题目:We have a list of
points
on the plane. Find theK
closest points to the origin(0, 0)
.(Here, the distance between two points on a plane is the Euclidean distance.)
You may return the answer in any order. The answer is guaranteed to be unique (except for the order that it is in.)
-
示例:(寻找K个与原点距离最近的点并返回点坐标)
Input: points = [[1,3],[-2,2]], K = 1 Output: [[-2,2]] Explanation: The distance between (1, 3) and the origin is sqrt(10). The distance between (-2, 2) and the origin is sqrt(8). Since sqrt(8) < sqrt(10), (-2, 2) is closer to the origin. We only want the closest K = 1 points from the origin, so the answer is just [[-2,2]].
- 解:
class Solution:
def kClosest(self, points, K):
"""
:type points: List[List[int]]
:type K: int
:rtype: List[List[int]]
"""
def culSqrt(points):#计算开方的函数,在map函数中使用
return (points[0]**2 + points[1]**2)**2
ret = sorted(zip(points,map(culSqrt,points)),key=lambda x:x[1])
# 先执行map函数计算坐标点到原点的距离,然后执行zip函数,将坐标和距离打包成例如([3,4],5)格式,然后使用sorted,前面打包内容的第二个元素(距离)进行排序。
return [point[0] for i,point in enumerate(ret) if i<K]
# 将前K个点追加到列表中并返回。