Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

973. K Closest Points to Origin #189

Open
Tcdian opened this issue May 31, 2020 · 1 comment
Open

973. K Closest Points to Origin #189

Tcdian opened this issue May 31, 2020 · 1 comment

Comments

@Tcdian
Copy link
Owner

Tcdian commented May 31, 2020

973. K Closest Points to Origin

我们有一个由平面上的点组成的列表 points。需要从中找出 K 个距离原点 (0, 0) 最近的点。

(这里,平面上两点之间的距离是欧几里德距离。)

你可以按任何顺序返回答案。除了点坐标的顺序之外,答案确保是唯一的。

Example 1

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

Example 2

Input: points = [[3,3],[5,-1],[-2,4]], K = 2
Output: [[3,3],[-2,4]]
(The answer [[-2,4],[3,3]] would also be accepted.)

Example 3

输入:N = 5, dislikes = [[1,2],[2,3],[3,4],[4,5],[1,5]]
输出:false

Note

  • 1 <= K <= points.length <= 10000
  • -10000 < points[i][0] < 10000
  • -10000 < points[i][1] < 10000
@Tcdian
Copy link
Owner Author

Tcdian commented May 31, 2020

Solution

使用 JavaScript 自带的排序,时间复杂度 O(NlogN),其中 N 是 points 的长度
还可以使用堆,时间复杂度 O(NlogK)。(太长了,懒得写...)
  • JavaScript Solution
/**
 * @param {number[][]} points
 * @param {number} K
 * @return {number[][]}
 */
var kClosest = function(points, K) {
    points.sort(([x1, y1], [x2, y2]) => x1 * x1 + y1 * y1 - (x2 * x2 + y2 * y2));
    return points.slice(0, K);
};
  • TypeScript Solution
var kClosest = function(points: number[][], K: number): number[][] {
    points.sort(([x1, y1], [x2, y2]) => x1 * x1 + y1 * y1 - (x2 * x2 + y2 * y2));
    return points.slice(0, K);
};

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant