[Leetcode]149. Max Points on a Line @python

来源:互联网 发布:淘宝链接e22a 编辑:程序博客网 时间:2024/04/30 09:17

题目

Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.

题目要求

给定n个2维平面上的点,找到在同一直线上最多的点数。

解题思路

在同一直线上要求所有点的斜率相同且经过同一个点。同时要考虑,斜率可能为无穷大,也有可能两个点为同一个点。

代码

# Definition for a point.# class Point(object):#     def __init__(self, a=0, b=0):#         self.x = a#         self.y = bclass Solution(object):    def maxPoints(self, points):        """        :type points: List[Point]        :rtype: int        """        length = len(points)        if length < 3: return length        max_points = 0        for i in range(length):            maps = {'inf':0}            same = 1            for j in range(i,length):                if i == j:                    continue                if points[i].x == points[j].x and points[i].y != points[j].y:                    maps['inf'] += 1                elif points[i].x != points[j].x:                    k = 1.0 * (points[i].y - points[j].y) / (points[i].x - points[j].x)                    if k not in maps:                        maps[k] = 1                    else:                        maps[k] += 1                else:                    same += 1            max_points = max(max_points,max(maps.values()) + same)        return max_points
0 0
原创粉丝点击