栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python第三章思考题(Python每日一练-----三点共线问题)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python第三章思考题(Python每日一练-----三点共线问题)

✐拒绝平躺,每日一卷(第11天)

目录

1.向量解法

2.斜率解法

3.面积解法


⛅题目:

给定一个数组 points ,其中 points[i] = [x, y] 表示 X-Y 坐标平面上的一个点

如果这些点不共线 则返回 true ,共线则返回false。

例1:

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

输出:true

例2:

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

输出:false

题目分析:

运用中学的知识就可以由很多种解法

1.向量解法

假设有三点A(a,b),B(c,d),C(e,f)

向量AB = (c-a, d-b)       向量BC = (e-c, f-d)

1.若AB和BC不共线,则AB+BC不等于(C点和A点不重合时,重合时共线)

2.若AB和BC共线,则AB+BC=0向量(AB,BC反向),或AB-BC=0向量(AB,BC同向)

2.斜率解法

先判断有没有相同的点,再判断三点共不共线。

共线的判断方法是,计算点1和点0的斜率,再计算点2和点1的斜率,看两个斜率相不相同。

坑点有三个:

    除法计算时除数不能为0;

    斜率可能是浮点数所以要用1.0 *一下把计算结果转成浮点数;

    两个浮点数比相同不能用等号,要用相减的差和0.0001的比大小来表示

3.面积解法

我们知道

1.当三点共线,三点构成三角形面积为0

2.当三点不共线,三点构成三角形面积不为0

知道三点计算三角形面积的公式有很多种,现在介绍下面这一种。

S=1/2[(x1y2-x2y1)+(x2y3-x3y2)+(x3y1-x1y3)

代码实现

def collinear(points):
        return (points[0][0] * (points[1][1] - points[2][1]) + points[1][0] * (points[2][1] - points[0][1]) + points[2][0] * (points[0][1] - points[1][1])) != 0

很简短,所以解决问题不要复杂化,先用数学知识解决在用代码实现,效果有时会出乎意料

❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄end❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/772659.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号