计算两组序列的交点(线)

时间:2016-12-11 08:20:43

标签: algorithm intersection line-intersection

我必须找到一种算法,可以找到两组数组之间的交叉总量,而其中一个数组是排序的。

一个例子,我们有这两个数组,我们绘制直线到相应的数字。 Intersection Points

这两个阵列为我们提供了总共 7个交叉点

它有哪些算法来帮助我解决这个问题?

我使用了搜索按钮,但没有找到任何可以解决这个问题的方法。

由于

2 个答案:

答案 0 :(得分:1)

给定两个数字M和N,如果

  • 顶部M位于顶部N的右侧,底部M位于底部N的右侧
  • 顶部M位于顶部N的左侧,底部M位于底部N的左侧

在另外两种情况下:

  • 左上,右下
  • 右上角,左下角

线 相交。

在示例中,8位于顶行的所有4个数字的左侧,而底部的3个数字的右侧,因此8与三个数字相交。

5位于顶部8的右侧,底部的8的左侧,给出一个交叉点。 5的左边是4和1在顶部,右边是4和1在底部,还有两个。所以5与三个数字相交。

请注意,我们计算了两次5和8的交点。事实上,每个交叉路口都会被计算两次。如果您完成该示例,您将计算14个交叉点。最后除以2得到答案。

答案 1 :(得分:-1)

您可以将每一行代表为y=a+bx,然后通过比较y值来比较每一行与其他行。

每一行与另一行最多有一个交集。