[bssd] 散尽家财+求祝福+问问题(关于哮喘)+奔照片+结网 (转# Parenting - 为人父母
i*2
1 楼
一个面试题,上周面的,想了很久也木有想出来。
题目如下:
假设有一群朋友在一个城市里,这个城市是2维的,每一个人都有一个自己的二维坐标
例如:
ID x y
1 0.0 0.0
2 10.1 -10.1
3 -12.2 12.2
4 38.3 38.3
5 79.99 179.99
其中每一个id代表一个人,找出对于每一个最近的3个朋友并打印出来,例如以上的这
堆人的结果就是:
1 2,3,4
2 1,3,4
3 1,2,4
4 1,2,3
5 4,3,1
要求是算法复杂度要小于n2
各位大牛有神马思路都提示一下吧,想了很久也没有很好的解决方法,有想到老师讲过
的nearest pair,但是貌似也不是很合适的方法。感觉至少算一下每两个点的距离都要
n2,然后就没有思路了。
题目如下:
假设有一群朋友在一个城市里,这个城市是2维的,每一个人都有一个自己的二维坐标
例如:
ID x y
1 0.0 0.0
2 10.1 -10.1
3 -12.2 12.2
4 38.3 38.3
5 79.99 179.99
其中每一个id代表一个人,找出对于每一个最近的3个朋友并打印出来,例如以上的这
堆人的结果就是:
1 2,3,4
2 1,3,4
3 1,2,4
4 1,2,3
5 4,3,1
要求是算法复杂度要小于n2
各位大牛有神马思路都提示一下吧,想了很久也没有很好的解决方法,有想到老师讲过
的nearest pair,但是貌似也不是很合适的方法。感觉至少算一下每两个点的距离都要
n2,然后就没有思路了。