首页
学习
活动
专区
圈层
工具
发布

​LeetCode刷题实战149:直线上最多的点数

题意 给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。 样例 ?...接着找下一条直线,直到我们计算完所有直线对应的点的个数。这种解法的时间复杂度是O(n^3),显然太慢了,而且实际操作起来也很麻烦。...我们知道一个线段是由斜率和截距决定的,实际上如果我们知道了一个直线上的点和这条直线的斜率也能确定这条直线。...基于此,我们可以遍历所以点point,计算其余点和point构成的直线的斜率,如果斜率相同,那么说明两个点在一条直线上,我们只要记录点的个数,最后找到最大值即可。...float('inf') if point1.x == point2.x else \ (point1.y - point2.y)/(point1

51920
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    关于oracle进行直线拟合----------太意外的收获,不得不转

    在oracle 通过sql实现一元线性回归方程 2016-07-11 16:40 67人阅读 评论(0) 收藏 举报 一元线性回归是指通过线来拟合空间中的点来表示自变量和因变量之间的关系。...如何在知道这些点的情况下通过计算得出这条直线,进而在知道自变量情况下算出因变量,是本篇文档的目的。 首先来看下一元线性回归方程式及a,b值的公式推导。 ?...4、斜率方程为: ---求出斜率 select ((regr_count(x, y) * sum(x * y) -        sum(x) * sum(a.y)) /        (regr_count...5、截距方程式为:---求出截距 select avg(y) -       avg(x) *       ((regr_count(x, y) * sum(x * y) -        sum(x)...得出的结果与excel图上的结果相同,公式为 y = 6.4286x - 1.4286。 6、最后用oracle自带的函数求线性回归方程。

    1.5K40

    Leetcode No.149 直线上最多的点数

    一、题目描述 给你一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。...因此一个朴素的做法是先枚举两条点(确定一条线),然后检查其余点是否落在该线中。...为了避免除法精度问题,当我们枚举两个点 i 和 j 时,不直接计算其对应直线的 斜率和 截距,而是通过判断 i 和 j 与第三个点 k 形成的两条直线斜率是否相等(斜率相等的两条直线要么平行,要么重合,...平行需要 4 个点来唯一确定,我们只有 3 个点,所以可以直接判定两直线重合)。...已知三点A(x0,y0) B(x1,y1) C(x2,y2),AB和BC斜率相等可得 (y1-y0)/(x1-x0)=(y2-y1)/(x2-x1) 则(y1-y0)*(x2-x1)=(y2-y1)*(

    25410

    Java使用最小二乘法实现线性回归预测

    最小二乘法 在研究两个变量(x, y)之间的相互关系时 通常可以得到一系列成对的数据(x1, y1),(x2, y2)… (xm , ym) 将这些数据描绘在x-y直角坐标系中 若发现这些点在一条直线附近...可以令这条直线方程y= e + wx 其中:w\e是任意实数 为建立这直线方程就要确定e和w 应用《最小二乘法原理》 将实测值Yi与利用计算y= e + wx值的离差(yi-y)的平方和 即〔∑(yi...x、y平均值 */ private double averageX, averageY; /** * 求斜率的上下两个分式的值 */ private...initData(); } public LinearRegression() { } /** * 根据训练集数据进行训练预测 * 并计算斜率和截距...(x, averageX))); } initSlopeIntercept(); } } /** * 计算斜率和截距

    3K20

    理解神经网络的本质

    直线l经过点A(1, 4),和点B(3, 7),求直线l的方程。...这个问题很简单,我们只需要将A、B点带入y = kx + b就可以得到下面方程组: 由上面的方程组,我们可以解出: 于是我们得到直线方程: 在我们得到直线方程后,我们对于任意给定的x,都能知道它对应的...,这时候我们先取点(1,12)和点(4,26),我们可以算出直线方程为如下: 现在我们再选取点(2,16)和点(6,33),我们可以计算出下面的直线方程: 由此可以看到这四个点并不在同一条直线上。...但是对比斜率和截距又发现,两者很相近。所以我们可以找一条折中的直线来拟合所有的点。 我们从数据中,找到这条最优(较优)的直线的过程就叫做线性回归。...0,斜率为k的直线 elif start < i <= end: # 这里start不为0,所以我们需要减去它,保证函数截距为0,然后乘k

    1K20

    【面试高频题】难度 35,近期面试原题(简单计算几何运用)

    题目描述 这是 LeetCode 上的「149. 直线上最多的点数」,难度为「困难」。...Tag : 「数学」、「枚举」、「哈希表」给你一个数组 points,其中 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。...为了避免除法精度问题,当我们枚举两个点 和 时,不直接计算其对应直线的 斜率和 截距,而是通过判断 和 与第三个点 形成的两条直线斜率是否相等(斜率相等的两条直线要么平行...具体的,我们可以先枚举所有可能出现的 直线斜率(根据两点确定一条直线,即枚举所有的「点对」),使用「哈希表」统计所有 斜率 对应的点的数量,在所有值中取个 即是答案。...在仓库地址里,你可以看到系列文章的题解链接、系列文章的相应代码、LeetCode 原题链接和其他优选题解。

    46630

    神经网络-感知器(二):Python代码实现

    2 Python实现 step 1:输入样本点及初始化信息 我们首先初始化一个0-1之间的权重向量,选定学习率为0.15,并预留变量记录迭代次数和输出。...,预测出的结果值,然后计算与实际值的差值再与学习率和x相乘,最后来调节下一次的权重。...这里计算权重变化时除以了输入的数据数,这是因为权重是每个点计算出需要的权值改变量的和,如果点过多,可能导致权重改变量过大,因此这里求均值。具体矩阵间计算关系可实际写一下就很好理清。...因为 ,当把x2当作y,x1当作x,就可以计算出直线的斜率与截距,从而画出直线。...#记录正负样本 x1 = [3,4] y1 = [3,3] x2 = [1] y2 = [1] #计算分界线的斜率及截距 k = -W[1]/W[2] d = -W[0]/W[2]

    1.1K30

    机器学习测试笔记(11)——线性回归方法(上)

    ,一般的直线可以表达为:y = kx+b,这里的k我们叫做斜率,b叫做截距(x=0的时候,y的值。...即直线与y轴的交叉点)。线性回归方法即找出一条直线,使得各个点到这条直线上的误差最小。 现在让我们通过Python语言来画一条直线:y = 0.5 * x + 3(这里斜率为0.5, 截距为3)。...我们可以通过LinearRegression().coef_[0]和LinearRegression().lr.intercept_来获取直线的斜率和截距,代码如下。...# 显示这条线的斜率和截距 print('y={:.3f}'.format(lr.coef_[0]),'x','+{:.3f}'.format(lr.intercept_)) 输出 y=1.000 x...这条直线的斜率为79.525,截距为10.922。到50个样本点的平均误差最小。 线性回归方法包括:最小二乘法、逻辑回归、支持向量机、岭回归和套索回归。下面我们进行一一介绍。

    1.5K10

    求z=x-y的概率密度_X和Y独立同分布

    ###Z=X+Y型概率密度的求解### @(概率论) Z = g ( X , Y ) Z = g(X,Y) Z=g(X,Y) 总结过一次,一般方法是可以由分布函数再求导得到概率密度,计算一定更要小心才能得到正确的解...&0yy)={ 3x,0,​0y<x,其他​ 求随机变量Z = X-Y的概率密度 f Z ( z ) f_Z(z...} \frac{3}{2}- \frac{3z^2}{2}, &0<z<1, \\ 0,&其他 \end{cases} fZ​(z)={ 23​−23z2​,0,​0<z<1,其他​ –写这个原因是求错了的答案怀疑这种公式无法使用...重新思考发现此法要比求二重积分再求导得到答案要快许多,运用得好,效率倍增。 Update:实际上这里没有彻底搞清楚x的取值范围问题,以至在后面出现了不是很理解的题目。 回到这里总结一下。...现在不是求二重积分而是一重积分,但是可以用二重积分的思想:认为是对z积分以后现在再对x积分,因此,x的取值是在垂直于z的取值范围内画一条红线,穿过阴影区域的上下限值,因此是(z,1),这才是真正的完整的解法

    2.1K40

    七天学完十大机器学习经典算法-01.线性回归:用一根直线破解现实世界的密码

    数学建模 用直线方程表示这种关系: y = wx + b y:可乐销量(目标变量) x:气温(特征变量) w:斜率(气温每升1℃增加的销量) b:截距(0℃时的基础销量) 三、核心问题...关键思想:最小化预测误差 假设我们画了一条直线: 预测28℃时销量 = 130瓶 实际销量 = 120瓶 误差 = 10瓶 损失函数(Loss Function):所有误差平方和(SSE...四、数学推导:闭眼也能求出最优解 方法1:正规方程(初中代数就能懂) 目标:最小化 SSE → 对w和b求偏导并令导数为0 推导过程: 展开SSE:      2....对b求偏导:  得到:b = ȳ - w̄x̄ (均值关系)     3. 对w求偏导:     4. 代入b后解得: 这就是著名的最小二乘法公式!...来看一个简单的计算案例(取气温,可乐销量数据作为x,y轴): # 手工计算斜率w x = [28, 32, 25, 30, 35] y = [120, 185, 95, 150, 210] mean_x

    20100

    农业银行算法题,为什么用初中知识出题,这么多人不会?

    题目描述 平台:LeetCode 题号:149 给你一个数组 points,其中 points[i] = [x_i, y_i] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。...一个朴素的做法是先枚举两点(确定一条线),然后检查其余点是否落在该线中。 为避免除法精度问题,当我们枚举两个点 x 和 y 时,不直接计算其对应直线的 斜率和 截距。...而是通过判断 x 和 y 与第三个点 p 形成的两条直线斜率是否相等,来得知点 p 是否落在该直线上。 斜率相等的两条直线要么平行,要么重合。...具体的,我们可以先枚举所有可能出现的 直线斜率(根据两点确定一条直线,即枚举所有的「点对」),使用「哈希表」统计所有 斜率 对应的点的数量,在所有值中取个 max 即是答案。...整体复杂度为 O(n^2 \times \log{m}) 空间复杂度: O(n) 总结 虽然题目是以初中数学中的"斜率 & 截距"为背景,但仍有不少细节需要把握。

    30310

    线性回归算法是什么

    一次函数 一次函数就是最简单的“线性模型”,其直线方程表达式为y = kx + b,其中 k 表示斜率,b 表示截距,x 为自变量,y 表示因变量。...下面展示了 y = 2x + 3 的函数图像: 图1:函数图像y=2x+3 函数中斜率 k 与 截距 b 控制着“直线”的“旋转”与“平移”。...如果斜率 k 逐渐减小,则“直线”会向着“顺时针”方向旋转,为 k= 0 的时候与 x 轴平行。截距 b 控制“直接”的上下平移,b 为正数则向上平移,b 为负数则表示向下平移。...其实它和 Y=wX + b 是类似的,只不过我们这个标量公式换成了向量的形式。...在上述函数中 n、Y、X1 都是已知的,因此只需找到一组 w 与 b 使得上述函数取得最小值即可,这就转变成了数学上二次函数求极值的问题,而这个求极值的过程也就我们所说的“优化方法”。

    25910

    精通Excel数组公式025:LINEST数组函数

    学习Excel技术,关注微信公众号: excelperfect 如果正在进行与x-y直线数据集相关的统计计算,那么一定会喜欢LINEST函数。...当使用最小二乘法将数据拟合到一条直线时,LINEST函数可以进行许多统计计算。...下面列出了该函数可以进行的一些统计计算: 1.判定系数 2.自由度 3.F统计 4.截距 5.斜率 6.截距的标准差 7.斜率的标准差 8.y标准差 9.回归平方和 10.残差平方和 使用LINEST将斜率和截距传递到水平单元格区域...4.忽略参数const,此时默认TRUE,正常计算截距。 5.忽略参数stats,此时默认FALSE,只计算斜率和截距。 6.使用Ctrl+Shift+Enter键输入公式。 ?...图1 如果要将计算出的斜率和截距传递到垂直区域,则使用图1中右下方的公式。 使用LINEST传递一个x变量的10个统计数据 本示例展示如何显示多个统计值。

    4.1K30

    第十二届蓝桥杯软件类省赛python组

    给定平面上2×3个整点( x , y )0 ≤ x y y ∈ Z, 即横坐标是0到1(包含0和1)之间的整数、纵坐标是0到2(包含0和2)之间的整数的点...40257 求每条直线的斜率和截距,然后进行去重 不知道有没有更好的方法 ''' 斜率:k = (y2 - y1) / (x2 - x1) 截距:b = - k * x1 + y1 = (x2 *...j in range(y)] # 每个点的坐标 line = set() # 用来存储每条线的斜率和截距 for i in range(len(points) - 1): x1, y1 =...[j][1] if x1 == x2: # 当斜率为无穷时不进行计算,斜率为无穷时直线个数为x continue k = (y2 - y1) /...((k, b)) # 利用元组不可变的性质,可以直接存入集合中 print(len(line) + x) # 加上斜率为无穷时的直线个数x 3.货物摆放 本题总分:10分 【问题描述】 小蓝有一个超大的仓库

    74920

    Wolfram|Alpha 中的分步解答数学工具帮助您学习化学课程

    求直线的斜率和截距 化学家们特别喜欢线性关系,其中非常流行的是比尔-朗伯定律实验的基础。利用分光光度计收集到的已知浓度样品的数据,可以形成一条最佳拟合线,这也叫线性回归。...这个方程的形式是y=mx+b,其中m为斜率,b为y截距。 通过一个简单的方程,如y = 3x + 1,确定斜率和截距是什么将是有帮助的,因为这些值可以插入其他方程或解释以确定特定的趋势或相关性。...此外,Wolfram|Alpha还可以用来重写一个不是y = mx + b形式的方程,将其变成这种形式。例如,给定方程 2x + 7y - 5 = 0,斜率和截距是多少?...你也可以输入 "2x+7y-5=0的斜率和y截距",直接得到答案,但知道如何确定方程的斜率——截距形式中的每个部分是很有帮助的。...继而,如果有人要问给定x=5,y的值是多少,通过计算x=5时的-2/7x+5/7,答案是-5/7,可以用前面看到的基本代数技巧来计算: 能够识别斜率和y截距是什么,还能插值确定y是什么,对于化学中的题目

    1.9K30
    领券