我遇到了这个问题,并希望有一个快速的算法来解决它。
给定2D平面中的n个点(它们都没有x值或y值等于另一个),找出形成具有正斜率的线的所有点对的数量。(比如(0,0)和(1,1),正斜率为45度)
由于n很大(比如60000),所以我需要一个优雅的算法来保持它在1秒内。 我知道使用O(n ^ 2)很容易做到,但它只是减速,大约需要30秒。是否有可能使用二元搜索树来实现nlogn复杂性?
我感谢任何想要启发我的人。
答案 0 :(得分:0)
看起来你应该能够以数学的方式做到这一点。
每组2分(我认为使用permations)将是正面或负面的,如果它们是随机点,这意味着平均50%为正,50%为负..所以它将是对数/ 2。