LeetCode(数据库)- 平面上的最近距离

Posted Lux_Sun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode(数据库)- 平面上的最近距离相关的知识,希望对你有一定的参考价值。

题目链接:点击打开链接

题目大意:略。

解题思路:注意:将 MIN() 放在 SQRT() 里面会轻微提高性能;解决方案(2)中,因为有一部分是会重复的(笛卡儿积),所以取其中一边进行计算即可。

AC 代码

-- 解决方案(1)
SELECT CAST(SQRT(MIN(POW(p1.x-p2.x, 2) + POW(p1.y-p2.y, 2))) AS DECIMAL(7, 2)) shortest
FROM point_2d p1, point_2d p2
WHERE !(p1.x = p2.x AND p1.y = p2.y)

-- 解决方案(2)
SELECT
    t1.x,
    t1.y,
    t2.x,
    t2.y,
    SQRT((POW(t1.x - t2.x, 2) + POW(t1.y - t2.y, 2))) AS distance
FROM
    point_2d t1
        JOIN
    point_2d t2 ON (t1.x <= t2.x AND t1.y < t2.y)
        OR (t1.x <= t2.x AND t1.y > t2.y)
        OR (t1.x < t2.x AND t1.y = t2.y);

以上是关于LeetCode(数据库)- 平面上的最近距离的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode(数据库)- 直线上的最近距离

leetcode-973最接近原点的K个点

每日SQL打卡​​​​​​​​​​​​​​​DAY 8丨平面上的最近距离难度中等

二维平面最近点-分治

平面最近点对(分治nlogn)

Luogu 1429 平面最近点对 | 平面分治