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

leetcode 149 --- Max Points on a line

全局:

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

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

x
(另外一种方法是把所有直线用A, B 两个参数来表示, 然后遍历所有直线,用HashMap计数)
我采用的是“定出发点,找斜率相同直线”的方法,思路类似。
  1. /**
  2. * Definition for a point.
  3. * class Point {
  4. *     int x;
  5. *     int y;
  6. *     Point() { x = 0; y = 0; }
  7. *     Point(int a, int b) { x = a; y = b; }
  8. * }
  9. */
  10. public class Solution {
  11.     public int maxPoints(Point[] points) {
  12.         if (points == null) {
  13.             return 0;
  14.         }
  15.         int maxPoints = 0;
  16.         int n = points.length;
  17.         // store the number of points on a particular
  18.         HashMap<Double, Integer> map;
  19.         for (int i = 0; i < n; ++i) {
  20.             map = new HashMap<>();
  21.             int samePoints = 0;
  22.             int maxSameLines = 0;
  23.             for (int j = i + 1; j < n; ++j) {
  24.                 if (points[i].x == points[j].x && points[i].y == points[j].y) {
  25.                     samePoints++;
  26.                     continue;
  27.                 }
  28.                 double gradient = 0.0;
  29.                 if (points[i].y != points[j].y)
  30.                         gradient = points[i].x == points[j].x ? Double.MAX_VALUE : (double)(points[j].y - points[i].y) / (double)(points[j].x - points[i].x);

  31.                 //use and update the map;
  32.                 if (map.containsKey(gradient)) {
  33.                     map.put(gradient, map.get(gradient) + 1);
  34.                 } else {
  35.                     map.put(gradient, 1);
  36.                 }
  37.                 maxSameLines = Math.max(maxSameLines, map.get(gradient));
  38.             }
  39.             maxPoints = Math.max(maxPoints, maxSameLines + samePoints + 1);
  40.         }
  41.         return maxPoints;
  42.     }
  43. }
复制代码

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

本版积分规则

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