# 973. K Closest Points to Origin
# Problem
We have a list of `points` on the [plane]({{[}}). Find the `K` closest points to the origin `(0, 0)`.
(Here, the [distance between two points]({{][}}) on a plane is the Euclidean distance.)
You may return the answer in any order. The answer is guaranteed to be unique (except for the order that it is in.)
## 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.)
```
## Constraints
* 1 <= `K` <= `len(points)` <= 10000
* -10000 < `points[i][0]` < 10000
* -10000 < `points[i][1]` < 10000
# Solution
## Priority queue
```go
func kClosest(points [][]int, K int) [][]int {
res := make(PQ, len(points))
for idx:=range points{
res[idx] = getn(points[idx])
}
heap.Init(&res)
resa := make([][]int, 0)
for i:=0;idist(points[1]){
points[0],points[1] = points[1],points[0]
}
return points
}
m:= len(points)/2
left:=sort(points[0: m])
right:=sort(points[m:len(points)])
res := make([][]int,0,len(points))
i:=0
j:=0
for i]