leetcode难度级别_直线上最多的点数

leetcode难度级别_直线上最多的点数给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。示例 1:输入: [[1,1],[2,2],[3,3]]输出: 3解释:^|| o| o| o +————->0 1 2 3 4示例 2:输入: [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]]输出: 4解释:^|| o| o o| o| o o+—–

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。

示例 1:

输入: [[1,1],[2,2],[3,3]]
输出: 3
解释:
^
|
|        o
|     o
|  o  
+------------->
0  1  2  3  4
示例 2:

输入: [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]]
输出: 4
解释:
^
|
|  o
|     o        o
|        o
|  o        o
+------------------->
0  1  2  3  4  5  6
const double eps = 1e-10;
const int N = 1e3 + 10;
bool cmp(const double &a,const double &b){ 
   
    return abs(a - b) < eps;
}
struct Node{ 
   
    double k;
    Node(double _k){ 
   
        k = _k;
    }
    bool operator<(const Node &b)const{ 
   
        if(cmp(k,b.k))return false;
        else return k < b.k;
    }
};
class Solution { 
   
public:
    map<Node,int>m;
    int maxPoints(vector<vector<int>>& points) { 
   
        int ans = 0;
        int n = points.size();
        if(n == 1 || n == 0)return n;
        for(int i = 0;i < n;i ++){ 
   
            m.clear();
            int same = 0;
            for(int j = 0;j < n;j ++){ 
   
                if(j == i)continue;
                int x1 = points[i][0],y1 = points[i][1];
                int x2 = points[j][0],y2 = points[j][1];
                if(x1 == x2){ 
   
                    same ++;
                    continue;
                }
                Node t(double(y1 - y2) / (x1 - x2));
                if(m.find(t) == m.end())m[t] = 0;
                m[t] ++;
            }
            for(auto &a : m){ 
   
                ans = max(ans,a.second);
            }
            ans = max(ans,same);
        }
        return ans + 1;
    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168550.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 解决VS2005打开js,css,asp.php等文件,中文都是乱码的问题

    解决VS2005打开js,css,asp.php等文件,中文都是乱码的问题

    2021年11月17日
    50
  • java prototype是什么,Java设计模式之原型模式(Prototype模式)介绍

    java prototype是什么,Java设计模式之原型模式(Prototype模式)介绍Prototype模式定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。如何使用原型模式因为Java中的提供clone()方法来实现对象的克隆,所以Prototype模式…

    2025年6月14日
    7
  • 点对点通信-简介

    点对点通信-简介点对点连接是两个系统或进程之间的专用通信链路。想象一下直接连接两个系统的一条线路。两个系统独占此线路进行通信。点对点通信的对立面是广播,在广播通信中,一个系统可以向多个系统传输。电话呼叫是面向电路的两部电话机之间的点对点链路。但是,呼叫通常是通过电话公司中继线多路复用的;因此虽然电路本身可能是虚拟的,但用户在进行点对点通信会话。端到端连接是指通过交换网络的两个系统间的连接。例如,因

    2022年7月15日
    17
  • 批处理for详解_python批处理

    批处理for详解_python批处理大纲一前言二for语句的基本用法三for/f(delims、tokens、skip、eol、userbackq、变量延迟)四for/r(递归遍历)五for/d(遍历目录)六for/l(计数循环) 一、前言在批处理中,for是最为强大的命令语句,它的出现,使得解析文本内容、遍历文件路径、数值递增/递减等操作成为可能;配合if、call、goto…

    2022年10月12日
    4
  • Arduino 硬件编程语言基础学习入门

    Arduino 硬件编程语言基础学习入门1、Arduino程序必要的setup()和loop()voidsetup(){}voidloop(){}setup()函数中的代码只会被运行一次,通常用来做一些初始化工作;loop()中的代码会被无限次地重复运行,此函数为程序的主体部分。2、程序中的值2.1变量和常量常量是一个字面量,只可以表示一个特定的量。2.2变量类型…

    2022年4月19日
    115
  • 虚拟现实项目开发流程图_虚拟现实项目

    虚拟现实项目开发流程图_虚拟现实项目http://www.unitymanual.com/thread-31034-1-1.html

    2025年11月9日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号