中级农民
- 积分
- 122
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2016-5-11
- 最后登录
- 1970-1-1
|
- # Definition for a point.
- # class Point(object):
- # def __init__(self, a=0, b=0):
- # self.x = a
- # self.y = b
- class Solution(object):
- def maxPoints(self, points):
- """
- :type points: List[Point]
- :rtype: int
- """
- l = len(points)
- ret = 0
- def gcd(a, b):
- if b == 0:
- return a
- return gcd(b, a % b)
- for i in range(len(points)):
- same = 0
- vertical = 0
- his = 0
- count = 0
- d = dict()
- for j in range(i + 1, l):
- nowx = (points[j].x - points[i].x)
- nowy = (points[j].y - points[i].y)
- if nowx == 0:
- if nowy == 0:
- same += 1
- else:
- vertical += 1
- elif nowy == 0:
- his += 1
- else:
- haha = gcd(abs(max(nowx, nowy)), abs(min(nowx, nowy)))
- nowx /= haha
- nowy /= haha
- if nowx < 0 and nowy > 0:
- nowx = -nowx
- nowy = -nowy
- elif nowx < 0 and nowy < 0:
- nowx = -nowx
- nowy = -nowy
- if str((nowx, nowy)) not in d:
- d[str((nowx, nowy))] = 1
- else:
- d[str((nowx, nowy))] += 1
- count = max(count, d[str((nowx, nowy))])
- same += max(count, vertical, his) + 1
- ret = max(ret, same)
- return ret
复制代码 我的代码非常乱,仅供参考 |
|