avatar
Max points on a line# JobHunting - 待字闺中
e*s
1
Max points on a line这道题,用算斜率的办法,把slope和在这个线上的点的数目放
到hashmap里。
但是leetcode上似乎有人加了一个test case,三个点
[0,0], [94911151, 94911150], [94911152, 94911151]
这样的话算出来的斜率用double是一样的,实际上这三个点不在一条线上所以出错了
用的是java,试了BigDecimal好像还是不行,这种情况怎么处理呀?大家指点一下。
原题如下:
Given n points on a 2D plane, find the maximum number of points that lie on
the same straight line.
/**
* Definition for a point.
* class Point {
* int x;
* int y;
* Point() { x = 0; y = 0; }
* Point(int a, int b) { x = a; y = b; }
* }
*/
public class Solution {
public int maxPoints(Point[] points) {
}
avatar
s*g
2
我从来不用double做这种比较。。。
我是把斜率约成最简
slope: s1 / s2
例如斜率0.4就是s1 = 2, s2 = 5
全部都是integer
没有任何confusion
当然corner case有好几个
例如斜率为0,斜率无穷之类的
avatar
m*0
3
借楼问一下,这题follow up如果有很多个点,一台机器处理不了。怎么分到多个机器
上做比较好。哪位牛人能回答一下
avatar
H*5
4
刚刚刷这一题,同样问题,这个case死活不过。
Input:
[[0,0],[94911151,94911150],[94911152,94911151]]
Output:
3
Expected:
2
avatar
j*e
5
这是因为计算double的时候精度不够造成的
实际上这个case是最近才加的
需要保留两个化简后的数做key就可以

【在 H**********5 的大作中提到】
: 刚刚刷这一题,同样问题,这个case死活不过。
: Input:
: [[0,0],[94911151,94911150],[94911152,94911151]]
: Output:
: 3
: Expected:
: 2

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。