K closest points
Posted 北叶青藤
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K closest points相关的知识,希望对你有一定的参考价值。
Find the K closest points to a target point in a 2D plane.
import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.PriorityQueue; class Point { public int x; public int y; public Point(int x, int y) { this.x = x; this.y = y; } } class Solution { public List<Point> findKClosest(Point[] points, int k, Point p) { // max heap PriorityQueue<Point> pq = new PriorityQueue<>(10, new Comparator<Point>() { @Override public int compare(Point a, Point b) { double d1 = distance(a, p); double d2 = distance(b, p); if (d1 == d2) return 0; if (d1 < d2) return 1; return -1; } }); for (int i = 0; i < points.length; i++) { pq.offer(points[i]); if (pq.size() > k) { pq.poll(); } } List<Point> x = new ArrayList<>(); while (!pq.isEmpty()) x.add(pq.poll()); return x; } private double distance(Point p1, Point p2) { return Math.sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y)); } }
以上是关于K closest points的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 973. K Closest Points to Origin
LC 973. K Closest Points to Origin
[LC] 973. K Closest Points to Origin