题目描述
(通过次数18,448 | 提交次数23,163,通过率79.64%)
表point保存了一些点在 x 轴上的坐标,这些坐标都是整数。 写一个查询语句,找到这些点中最近两个点之间的距离。 | x | |-----| | -1 | | 0 | | 2 | 最近距离显然是 '1' ,是点 '-1' 和 '0' 之间的距离。所以输出应该如下: | shortest| |---------| | 1 | 注意:每个点都与其他点坐标不同,表table不会有重复坐标出现。 进阶:如果这些点在 x 轴上从左到右都有一个编号,输出结果时需要输出最近点对的编号呢? 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/shortest-distance-in-a-line
//测试数据 Create Table If Not Exists Point (x int not null); insert into Point (x) values ('-1'); insert into Point (x) values ('0'); insert into Point (x) values ('2');
解题思路
Point表保存了一组x轴上的点。
题目要求:返回这些点之间的最近距离。
从数学上来说,一条坐标轴上的两个点之间的距离,为这两个坐标之差的绝对值。
那么,首先,我们需要得到这些点的两两组合。
然后,计算出每一个组合的距离值。
最后再得出最小值即可。
参考SQL
未特别说明的情况下,参考SQL为基于MySQL8.0实现。
select min(b.x-a.x) shortest from point a inner join point b on a.x < b.x;
本站所有内容均为原创,本站保留所有权利。仅允许非商业用途的转载,但必须注明来源网站、作者、来源链接!否则,由此造成的一切后果,由转载方承担!
干货分享、技术提升、面试笔试、学习交流,欢迎关注公众号:xuesql。QQ学习交流群:209942678。