排序 中等 973 最接近原點的 K 個點

2021-10-20 08:49:44 字數 1634 閱讀 7669

【題目】

我們有乙個由平面上的點組成的列表 points。需要從中找出 k 個距離原點 (0, 0) 最近的點。

(這裡,平面上兩點之間的距離是歐幾里德距離。)

你可以按任何順序返回答案。除了點座標的順序之外,答案確保是唯一的。

【示例 1】

輸入:points = [[1,3],[-2,2]], k = 1

輸出:[[-2,2]]

解釋:(1, 3) 和原點之間的距離為 sqrt(10),

(-2, 2) 和原點之間的距離為 sqrt(8),

由於 sqrt(8) < sqrt(10),(-2, 2) 離原點更近。

我們只需要距離原點最近的 k = 1 個點,所以答案就是 [[-2,2]]。

【示例 2】

輸入:points = [[3,3],[5,-1],[-2,4]], k = 2

輸出:[[3,3],[-2,4]]

(答案 [[-2,4],[3,3]] 也會被接受。)

【提示】

1 <= k <= points.length <= 10000

-10000 < points[i][0] < 10000

-10000 < points[i][1] < 10000

【**】

【python】

執行用時:

696 ms, 在所有 python3 提交中擊敗了81.83%的使用者

記憶體消耗:

20.1 mb, 在所有 python3 提交中擊敗了48.47%的使用者

class

solution

:def

mycmp

(self,num)

:return num[2]

defkclosest

(self, points: list[list[

int]

], k:

int)

-> list[list[

int]]:

for p in points:

pow(p[0]

,2)+

pow(p[1]

,2))

points.sort(key=self.mycmp)

for p in points:

p.pop(

)return points[

:k]

【使用匿名函式】耗時長

class

solution

:def

mycmp

(self,num)

:return num[2]

defkclosest

(self, points: list[list[

int]

], k:

int)

-> list[list[

int]]:

for p in points:

pow(p[0]

,2)+

pow(p[1]

,2))

points.sort(key=self.mycmp)

for p in points:

p.pop(

)return points[

:k]

973 最接近原點的 K 個點 中等 排序 快排

我們有乙個由平面上的點組成的列表points。需要從中找出k個距離原點 0,0 最近的點。這裡,平面上兩點之間的距離是歐幾里德距離。你可以按任何順序返回答案。除了點座標的順序之外,答案確保是唯一的。示例 1 輸入 points 1,3 2,2 k 1 輸出 2,2 解釋 1,3 和原點之間的距離為 ...

973 最接近原點的 K 個點

我們有乙個由平面上的點組成的列表points。需要從中找出k個距離原點 0,0 最近的點。這裡,平面上兩點之間的距離是歐幾里德距離。你可以按任何順序返回答案。除了點座標的順序之外,答案確保是唯一的。示例 1 輸入 points 1,3 2,2 k 1 輸出 2,2 解釋 1,3 和原點之間的距離為 ...

973 最接近原點的 K 個點

輸入資料樣本很少 直接排序 def kclosest self,points list list int k int list list int dis for i,point in enumerate points i,point 0 2 point 1 2 mdis sorted dis,key...