查看: 2771| 回复: 11
跳转到指定楼层
上一主题 下一主题
收起左侧

请问有人用python AC leetcode149题么?求答案

🔗
qlshun | 只看该作者 |倒序浏览
全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
我自己怎么都通不过全部test case,貌似python的精度不够啊

上一篇:刷题视频推荐
下一篇:关于Subsets中deep copy的问题
推荐
ivanyang 2017-11-8 04:22:32 | 只看该作者
全局:
qlshun 发表于 2017-11-8 04:18
是嘛,能不能说的更详细点或贴一段代码学习下啊
  1. # Definition for a point.
  2. # class Point(object):
  3. #     def __init__(self, a=0, b=0):
  4. #         self.x = a
  5. #         self.y = b

  6. class Solution(object):
  7.     def maxPoints(self, points):
  8.         """
  9.         :type points: List[Point]
  10.         :rtype: int
  11.         """
  12.         l = len(points)
  13.         ret = 0
  14.         def gcd(a, b):
  15.             if b == 0:
  16.                 return a
  17.             return gcd(b, a % b)
  18.         for i in range(len(points)):
  19.             same = 0
  20.             vertical = 0
  21.             his = 0
  22.             count = 0
  23.             d = dict()
  24.             for j in range(i + 1, l):
  25.                 nowx = (points[j].x - points[i].x)
  26.                 nowy = (points[j].y - points[i].y)
  27.                 if nowx == 0:
  28.                     if nowy == 0:
  29.                         same += 1
  30.                     else:
  31.                         vertical += 1
  32.                 elif nowy == 0:
  33.                     his += 1
  34.                 else:
  35.                     haha = gcd(abs(max(nowx, nowy)), abs(min(nowx, nowy)))
  36.                     nowx /= haha
  37.                     nowy /= haha
  38.                     if nowx < 0 and nowy > 0:
  39.                         nowx = -nowx
  40.                         nowy = -nowy
  41.                     elif nowx < 0 and nowy < 0:
  42.                         nowx = -nowx
  43.                         nowy = -nowy
  44.                     if str((nowx, nowy)) not in d:
  45.                         d[str((nowx, nowy))] = 1
  46.                     else:
  47.                         d[str((nowx, nowy))] += 1
  48.                     count = max(count, d[str((nowx, nowy))])
  49.             same += max(count, vertical, his) + 1
  50.             ret = max(ret, same)
  51.         return ret
复制代码
我的代码非常乱,仅供参考
回复

使用道具 举报

推荐
jason123 2017-11-3 15:04:37 | 只看该作者
全局:
qlshun 发表于 2017-11-2 23:08
非常感谢你的回复,请问你的code能AC么?我用了longdouble还是不能ac

我的可以
k = np.longdouble((points[i].y - points[j].y))/np.longdouble((points[i].x - points[j].x))
if k in slopPointsMap:
    slopPointsMap[k] += 1
else:
    slopPointsMap[k] = 2
回复

使用道具 举报

全局:
用numpy不算违规,这道题不能AC的原因完全在于Python自己对于浮点数的一些设计,楼上那样解决了自然最好,没解决的话我觉得面试完全可以跟面试官说一下临时用个Java什么的,而且一般面试不都白板么,我记得这题不过的也就是一两个边边角角的测试用例
回复

使用道具 举报

🔗
jason123 2017-11-2 16:29:16 | 只看该作者
全局:
是的,精度不够,你可以import numpy 用 longdouble
回复

使用道具 举报

🔗
 楼主| qlshun 2017-11-2 23:08:36 | 只看该作者
全局:
jason123 发表于 2017-11-2 16:29
是的,精度不够,你可以import numpy 用 longdouble

非常感谢你的回复,请问你的code能AC么?我用了longdouble还是不能ac
回复

使用道具 举报

🔗
greenmoon55 2017-11-2 23:59:19 | 只看该作者
全局:
leetcode还可以import numpy??
回复

使用道具 举报

🔗
 楼主| qlshun 2017-11-6 09:07:29 | 只看该作者
全局:
greenmoon55 发表于 2017-11-2 23:59
leetcode还可以import numpy??

你想import 什么都可以,只要加在最前面就可以了
回复

使用道具 举报

🔗
 楼主| qlshun 2017-11-6 09:11:11 | 只看该作者
全局:
jason123 发表于 2017-11-3 15:04
我的可以
k = np.longdouble((points.y - points[j].y))/np.longdouble((points.x - points[j].x))
if  ...

万分感谢你,我用了你的方法真的AC了
回复

使用道具 举报

🔗
jason123 2017-11-7 16:04:34 | 只看该作者
全局:
qlshun 发表于 2017-11-6 09:11
万分感谢你,我用了你的方法真的AC了

不客气
回复

使用道具 举报

🔗
ivanyang 2017-11-8 02:43:05 | 只看该作者
全局:
用numpy略违规了其实,我的思路是求最简分数作key而不是浮点数
回复

使用道具 举报

🔗
 楼主| qlshun 2017-11-8 04:18:03 | 只看该作者
全局:
ivanyang 发表于 2017-11-8 02:43
用numpy略违规了其实,我的思路是求最简分数作key而不是浮点数

是嘛,能不能说的更详细点或贴一段代码学习下啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表