[LintCode] Max Points on a Line

news/2024/7/3 12:50:48

Problem

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

Example

Given 4 points: (1,2), (3,6), (0,0), (1,3).
The maximum number is 3.

Note

建立一个斜率对应point个数的HashMap。
两次循环对points中第i个和第j个进行比较:
设置重复点数duplicate,相同斜率点数count。内部循环每次结束后更新count——和点i相同斜率的点的最大数目。(点i可能有很多相同斜率点的集合,故内层遍历完之后取最大的集合的大小。)
外部循环每次更新res为之前结果和本次循环所得duplicate+count的较大值。
重点一:以一个点为参照求其他点连线的斜率,不需要计算斜率。
重点二:两次循环体现重点一中的相对关系,可以让j从i开始,节省时间。

Solution

public class Solution {
    public int maxPoints(Point[] points) {
        // Write your code here
        int res = 0;
        if (points == null || points.length == 0) {
            return 0;
        }
        for (int i = 0; i < points.length; i++) {
            int count = 0;
            int duplicate = 1;
            Map<Double, Integer> map = new HashMap<Double, Integer>();
            Point p = points[i];
            for (int j = i; j < points.length; j++) {
                Point q = points[j];
                if (q == p) continue;
                if (q.x == p.x && q.y == p.y) duplicate++;
                else {
                    double s = p.x == q.x ? Double.MAX_VALUE: (double)(p.y-q.y)/(p.x-q.x);
                    map.put(s, map.containsKey(s) ? map.get(s)+1: 1);
                    count = Math.max(count, map.get(s));
                }
            }
            res = Math.max(res, count+duplicate);
        }
        return res;
    }
}

http://www.niftyadmin.cn/n/1152339.html

相关文章

元素宽度由里面内容决定(宽度由子元素内容撑开)解决方法

今天遇到这样一个问题&#xff0c;我父元素的宽度要由里面子元素撑开&#xff0c;感觉很常见&#xff0c;突然不造怎么写了&#xff0c;百度了一下&#xff0c;就是将 &#xff1a; 父元素 设置成 display&#xff1a;inline-block 即可。或者是加float。转载于:https:/…

【IstioCAT】监控平台对比

CAT&#xff08;Central Application Tracking&#xff09;简介&#xff1a; &#xff08;1&#xff09;大众点评开源监控项目&#xff08;支持多语言Java、C、C、Python、Go、Node.js&#xff09; &#xff08;2&#xff09;实时全量监控数据采集&#xff08;方法级别&#xf…

JPA 持久层框架的初学笔记

文章目录why?what&#xff1f;how&#xff1f;1. 基础部件介绍2. 数据库结构3. jpa的jar包依赖配置&#xff08;Maven&#xff09;4. JPA的配置5. 实体类6. DAO接口7. 测试代码完整项目why? JPA的作用类似于MyBatis&#xff0c;但更加的自动化&#xff0c;在对数据库性能要求…

jstat命令查看jvm的GC情况 (以Linux为例)

复制于 https://blog.csdn.net/lby0307/article/details/79276573 查看jvm的pid&#xff08;下面的8499&#xff09;&#xff0c;执行&#xff1a;jps &#xff08;虚拟机进程状况工具&#xff09; [rootjava-ceshi ~]# jps 8499 Bootstrap 11284 Jps 语法 jsp [option] […

Android sqlite sql语句基础

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/qingfeng812/article/details/50678143

Kubernetes分布式任务调度方案 - Elastic-job-lite

鉴于k8s平台支持自动伸缩&#xff08;扩容、缩容&#xff09;&#xff0c;原项目进行扩容&#xff08;多实例&#xff09;后的定时任务调度会出现多实例重复执行任务的情况&#xff0c; 所以需要将定时任务调度切换到分布式方案&#xff08;支持分片&#xff09;&#xff0c;建…

一些日常忽略的细节程序设置

2019独角兽企业重金招聘Python工程师标准>>> 一、前后台COOKIE设置 前台&#xff1a; $cookie_time SYS_TIME86400*30; if(!$r[lang]) $r[lang] zh-cn; if(!isset($cookietime)) {$get_cookietime param::get_cookie(cookietime); } $_cookietime $cookietime ?…

在使用JPA进行数据库操作时,插入中文报错

文章目录问题描述原因解决办法问题描述 在学习JPA的使用时&#xff0c;我使用 save() 方法去更新表和插入新的记录&#xff1b; 当我数据中含有中文时&#xff0c;会报错 当我数据中没有中文时&#xff0c;正常使用 原因 数据库的字符编码问题&#xff0c; 我使用的mysql数据…