SO Link不回答这个问题。我无法弄清楚如何在Hackerspace上解决这个问题。在线解决方案似乎都没有起作用。这是一个错误还是我做错了什么?
将P1(a,b)和P2(c,d)视为2D平面上的两个点。
a恰好等于北纬度的最小值(STATION中的LAT_N)。
b恰好等于西经的最小值(STATION中的LONG_W)。
c碰巧等于北纬度的最大值(STATION中的LAT_N)。
d恰好等于西经度中的最大值(STATION中的LONG_W)。
查询点之间的曼哈顿距离,并将其四舍五入到小数位。
输入格式
STATION表描述如下:
STATION表
数据库:MySQL
来源:https://www.hackerrank.com/challenges/weather-observation-station-18/problem
链接:distance between two longitude and latitude(已尝试,但未提供任何答案。)
SELECT ROUND(ABS(MIN(Station.LAT_N) - MIN(Station.LONG_W)) + ABS(MAX(Station.LAT_N) - MAX(Station.Long_W)), 4)
FROM Station;
答案 0 :(得分:2)
曼哈顿距离的公式是| a - c | + | b - d |其中a和b分别为min lat和long,c和d分别为max lat和long。
select
round(
abs(
min(lat_n)- max(lat_n)
) + abs(
min(long_w)- max(long_w)
), 4
)
from
station;
我得到了25个hakker积分!我可以从你那里得到25分吗?
答案 1 :(得分:0)
如果不写答案:你需要计算最小和最大经度之间的水平差异,并添加最小纬度和最大纬度之间的垂直差异。
你的代码做了一些不同的事情。如果您相应地更新了代码,那么剩下的就行了,并且hackerrank会将其标记为正确。
答案 2 :(得分:0)
您正在比较纬度和经度,而您需要将纬度与纬度和经度与经度进行比较。 (1,3)
和(2,4)
之间的曼哈顿距离为|1-2|+|3-4|
,而不是|1-4|+|2-3|
。
还应该指出的是,由于您采用了相同范围的最小值和最大值,因此您实际上并不需要绝对值函数。 round(max(x)-min(x)+max(y)-min(y), 4)
效果非常好 - 而且速度稍快。