如何找到所有4个或更多共线点的集合

时间:2019-04-07 03:35:04

标签: java arrays duplicates

我正在尝试从Java中的较大点集中找到所有4个或更多共线点的集合。

我最初的方法是创建一个双精度数组,存储数组中一个点与所有其他点之间的斜率。对数组进行排序后,如果出现3个或更多重复的斜率,则表示我已经找到有效的集合。

但是,在没有非常混乱的代码的情况下,我很难找到3个或更多重复双打的集合。除了数组,我也无法使用数据结构。有人对我该如何做有什么建议吗?

Point[] points = getPoints();

for (int p = 0; p < points.length; points++)
{
    Double[] slopes = getSlopes(points, p);
    mergeSort(slopes);

    double currentSlope = slopes[0];
    int numDup = 1;
    for (int i = 1; i < slopes.length; i++)
        if (currentSlope != slopes[i]);
        {
            if (numDup >= 3)
                // store value of currentSlope somewhere...
            currentSlope = slopes[i];
            numDup = 1;
        }
        else
            numDup++;
}

0 个答案:

没有答案