LeetCode 149. 直线上最多的点数

LeetCode 149. 直线上最多的点数

给你一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。

示例 1:

输入:points = [[1,1],[2,2],[3,3]]

输出:3

示例 2:

输入:points = [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]]

输出:4

提示:

1 <= points.length <= 300

points[i].length == 2

-104 <= xi, yi <= 104

points 中的所有点 互不相同

恰巧AC,但题解不对,还是看大佬的解法

python 复制代码
class Solution:
    def maxPoints(self, points: List[List[int]]) -> int:
        if len(points) == 1:
            return 1

        combine_mapping = {}
        for i in range(2, len(points) + 1):
            combine_mapping[math.comb(i, 2)] = i
        
        mapping = defaultdict(lambda: 0)
        mapping[(0,0,0)] = 1
        for i in range(len(points)):
            for j in range(i + 1, len(points)):
                (x1, y1), (x2, y2) = points[i], points[j]
                a, b, c = y2 - y1, x1 - x2, x2 * y1 - x1 * y2
                d = a if a else b
                a, b, c = a / d, b / d, c / d
                mapping[(a, b, c)] += 1
        res = (0,0,0)
        for i in mapping:
            if combine_mapping[mapping[res]] <= combine_mapping[mapping[i]]:
                res = i
        return  combine_mapping[mapping[res]]
相关推荐
编程绿豆侠1 小时前
力扣HOT100之图论:200. 岛屿数量
算法·leetcode·图论
编程绿豆侠1 小时前
力扣HOT100之图论:994. 腐烂的橘子
算法·leetcode·图论
摆烂仙君2 小时前
腾讯2025年校招笔试真题手撕(一)
java·数据结构·算法
虾球xz2 小时前
游戏引擎学习第307天:排序组可视化
c++·学习·算法·游戏引擎
虾球xz2 小时前
游戏引擎学习第306天:图结构排序的调试
c++·学习·算法·游戏引擎
多则惑少则明8 小时前
java 代码查重(三)常见的距离算法和相似度(相关系数)计算方法
java·算法·常见的距离算法和相似度
项目申报小狂人8 小时前
高性能算法RIME:基于物理的优化的霜冰优化算法
算法
水蓝烟雨8 小时前
[每日一题] 3362. 零数组变换 iii
算法·每日一题
项目申报小狂人8 小时前
完整改进RIME算法,基于修正多项式微分学习算子Rime-ice增长优化器,完整MATLAB代码获取
学习·算法·matlab
Cherl.8 小时前
探索数据结构的时间与空间复杂度:编程世界的效率密码
c语言·数据结构·算法·时间复杂度·空间复杂度