|
| 1 | +""" |
| 2 | +Problem Link: https://leetcode.com/problems/k-closest-points-to-origin/ |
| 3 | + |
| 4 | +Given an array of points where points[i] = [xi, yi] represents a point on |
| 5 | +the X-Y plane and an integer k, return the k closest points to the origin (0, 0). |
| 6 | +The distance between two points on the X-Y plane is the Euclidean distance |
| 7 | +(i.e., √(x1 - x2)2 + (y1 - y2)2). |
| 8 | +You may return the answer in any order. The answer is guaranteed to be unique |
| 9 | +(except for the order that it is in). |
| 10 | + |
| 11 | +Example 1: |
| 12 | +Input: points = [[1,3],[-2,2]], k = 1 |
| 13 | +Output: [[-2,2]] |
| 14 | +Explanation: |
| 15 | +The distance between (1, 3) and the origin is sqrt(10). |
| 16 | +The distance between (-2, 2) and the origin is sqrt(8). |
| 17 | +Since sqrt(8) < sqrt(10), (-2, 2) is closer to the origin. |
| 18 | +We only want the closest k = 1 points from the origin, |
| 19 | +so the answer is just [[-2,2]]. |
| 20 | + |
| 21 | +Example 2: |
| 22 | + |
| 23 | +Input: points = [[3,3],[5,-1],[-2,4]], k = 2 |
| 24 | +Output: [[3,3],[-2,4]] |
| 25 | +Explanation: The answer [[-2,4],[3,3]] would also be accepted. |
| 26 | + |
| 27 | +Constraints: |
| 28 | +1 <= k <= points.length <= 104 |
| 29 | +-104 < xi, yi < 104 |
| 30 | +""" |
| 31 | +import math |
| 32 | + |
| 33 | +class Solution: |
| 34 | + def kClosest(self, points: List[List[int]], k: int) -> List[List[int]]: |
| 35 | + distance = [] |
| 36 | + for x, y in points: |
| 37 | + distance.append([math.sqrt((x**2) + (y**2)), x, y]) |
| 38 | + |
| 39 | + distance.sort() |
| 40 | + |
| 41 | + res = [] |
| 42 | + for index in range(k): |
| 43 | + _, x, y = distance[index] |
| 44 | + res.append([x, y]) |
| 45 | + return res |
0 commit comments