LeetCode 1232. Check If It Is a Straight Line
@(LeetCode)
问题描述
给定一个坐标点数组,每个坐标点表示为:coordinates[i] = [x, y]
,其中 [x, y]
代表点的坐标。检查这些点是否在一条直线上。
栗 1:
栗 2:
注意:
2 <= coordinates.length <= 1000
。coordinates[i].length == 2
。-10^4 <= coordinates[i][0], coordinates[i][1] <= 10^4
。coordinates
中没有重复的点。
解题思路
这是一道灰常简单的题目,有相关数学知识即可。
如果一些点在一条直线上,那么任意两点组成线段的斜率相同。
因此,可将题目转换为:计算两点之间的斜率,与初始斜率做比较,判定条件如下。
若不等,则不在一条直线;
若所有的点都相等,则在一条直线上。
而两个点的选择,只需从头遍历点即可。
比如 [x0, y0], [x1, y1], [x2, y2]
三点之间的比较如下:
若采用上面除法的方式比较斜率,则需要注意浮点数相等的比较。不过也可换一种方式,采用乘法来比较,如下所示。
js
代码:
本文同步发表在简书,https://www.jianshu.com/p/0da2e288bf25。
版权声明: 本文为 InfoQ 作者【liu_liu】的原创文章。
原文链接:【http://xie.infoq.cn/article/298e7f1df9940921965d46a65】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论