java 在二维plane.java中找到K最近点到点P.

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 在二维plane.java中找到K最近点到点P.相关的知识,希望对你有一定的参考价值。

private List<Point> nearestKPoint_1(List<Point> list, final Point center, int k) {
    List<Point> ans = new ArrayList<>();
    PriorityQueue<Point> maxHeap = new PriorityQueue<>(k + 1, new Comparator<Point>() {
        @Override
        public int compare(Point o1, Point o2) {
            return distance(center, o2) - distance(center, o1);
        }
    });
    for (Point p : list) {
        maxHeap.offer(p);
        if (maxHeap.size() > k) {
            maxHeap.poll();
        }
    }
    Iterator<Point> i = maxHeap.iterator();
    while (i.hasNext()) {
        ans.add(i.next());
    }
    return ans;
}

public int distance(Point p1, Point p2) {
    return (p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y);
}

static class Point {
    int x;
    int y;

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Point point = (Point) o;

        if (x != point.x) return false;
        return y == point.y;
    }

    @Override
    public int hashCode() {
        int result = x;
        result = 31 * result + y;
        return result;
    }
}

以上是关于java 在二维plane.java中找到K最近点到点P.的主要内容,如果未能解决你的问题,请参考以下文章

java 在二维plane.java中找到K最近点到点P.

java 在二维plane.java中找到K最近点到点P.

java 在二维plane.java中找到K最近点到点P.

java 在二维plane.java中找到K最近点到点P.

在二维平面中找到K最近点到点P.

HDU 1589 Stars Couple(计算几何求二维平面的最近点对和最远点对)