直线上的最大点

2024-09-30 20:32:51 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我针对oj问题的python代码:“一行上的最大点”,我在本地用很多测试点对它进行了测试,看起来还可以,但是oj回答“编译错误”。你知道吗

我错过什么了吗?你知道吗

import operator

class Solution:
    # @param points, a list of Points
    # @return an integer
    def maxPoints(self, points):
        pointset = set(points)
        if len(pointset) < 3:
            return len(points)
        else:
            pointdict ={pkey:points.count(pkey) for pkey in pointset}
            count = 0

            while len(pointset) > 1:
                point1 = pointset.pop()
                point2set = pointset.copy()

                while point2set:
                    point2 = point2set.pop()
                    point3set = point2set.copy()

                    lineset = {point1, point2}

                    if point3set:
                        for point3 in point3set:
                            if (point1.x-point2.x)*(point2.y-point3.y) == (point2.x-point3.x)*(point1.y-point2.y) :
                                lineset.add(point3)
                                point2set.remove(point3)

                    linecount = reduce(operator.add, [pointdict[p] for p in lineset])

                    if linecount > count: 
                        count = linecount
            return count

Tags: inforlenreturnifcountpointspoint1