Kth Closest Point in an Array
题目:
给出2D平面上的N个点,求离原点最近的k个点。
解题思路:
用maxHeap来做
代码:
给出2D平面上的N个点,求离原点最近的k个点。
解题思路:
用maxHeap来做
代码:
static class Point implements Comparator{ int x; int y; public int getDistance(){ return (int)Math.abs(Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2))); } @Override public int compare(Object o1, Object o2) { return ((Point)o2).getDistance() - ((Point)o1).getDistance(); } public Point(int x, int y){ this.x = x; this.y = y; } } public static Point findKthLargest(Point[] nums, int k) { PriorityQueue<Point> q = new PriorityQueue<>((i, j) -> j.getDistance() - i.getDistance()); for(Point p : nums){ q.offer(p); } for(int i = 0; i <= k - 2; i++){ q.poll(); } return q.poll(); } public static void main(String[] args){ Point p1 = new Point(1, 1); Point p2 = new Point(2, 2); Point p3 = new Point(3, 3); Point p6 = new Point(6, 6); Point p5 = new Point(5, 5); Point p4 = new Point(4, 4); Point[] points = new Point[6]; points[0] = p1; points[1] = p2; points[2] = p3; points[3] = p4; points[4] = p5; points[5] = p6; Point rst = findKthLargest(points, 2); System.out.println(rst.x + " " + rst.y); }

Comments
Post a Comment