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(数据库)- 平面上的最近距离的主要内容,如果未能解决你的问题,请参考以下文章