最接近原點的K個點

2022-01-10 08:55:05 字數 1117 閱讀 1775

我們有乙個由平面上的點組成的列表points。需要從中找出k個距離原點(0, 0)最近的點。 (這裡,平面上兩點之間的距離是歐幾里德距離。)

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

輸入: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]]。

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

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

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

/**

* @param points

* @param k

* @return

*/var kclosest = function(points, k) )

return points.slice(0, k);

};

如果要真正的計算歐幾里得距離的話,得到的數可能會是個小數,除了會有精度誤差之外在計算方面不如整型計算快,而且由於計算僅僅是為了比較而用,直接取算歐幾里得距離的平方計算即可,所以直接根據距離排序並取出前n個陣列即可,當然直接對於取出前n個最大最小值的情況下使用大小頂堆效率會更高。首先定義n為點的數量,當k取值大於等於點的數量直接將原陣列返回即可,之後定義排序,將a點與b點的歐幾里得距離的平方計算出並根據此值進行比較,排序結束後直接使用陣列的slice方法對陣列進行切片取出前k個值即可。

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...

演算法 最接近原點的 K 個點

題目 我們有乙個由平面上的點組成的列表 points。需要從中找出 k 個距離原點 0,0 最近的點。這裡,平面上兩點之間的距離是歐幾里德距離。例如 輸入 points 1,3 2,2 k 1 輸出 2,2 分析 如題也就是說,求出前k個離 0,0 最近的點。那就要排序。距離如何排序?先用勾股定理求...