我們有乙個由平面上的點組成的列表 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: 該方法超時(不可用)
#include
#include
#include
#include
struct pointsstr
;int
comparervec
(const
void
*a,const
void
*b )
class
solution
; vector pointsres;
vectorint>> res;
for(size_t i =
0; i < points.
size()
; i++
)else}}
for(size_t i =
0; i < k && i < points.
size()
; i++
)return res;}}
;
解法二: 先新增資料後排序
#include
#include
#include
#include
struct pointsstr
;int
comparervec
(const
void
*a,const
void
*b )
class
solution
; vector pointsres;
vectorint>> res;
for(size_t i =
0; i < points.
size()
; i++
)qsort
(pointsres.
data()
, pointsres.
size()
,sizeof
(pointsstr)
, comparervec)
;for
(size_t i =
0; i < k && i < points.
size()
; i++
)return res;}}
;
解法2-精簡版:
class
solution);
return;}
};
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...
leetcode 973 最接近原點的 K 個點
我們有乙個由平面上的點組成的列表 points。需要從中找出 k 個距離原點 0,0 最近的點。這裡,平面上兩點之間的距離是歐幾里德距離。你可以按任何順序返回答案。除了點座標的順序之外,答案確保是唯一的。示例 1 輸入 points 1,3 2,2 k 1 輸出 2,2 解釋 1,3 和原點之間的距...