题目描述
-
有效的回旋镖
给定一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点,如果这些点构成一个 回旋镖 则返回 true 。
回旋镖 定义为一组三个点,这些点 各不相同 且 不在一条直线上 。
示例 1:
输入:points = [[1,1],[2,3],[3,2]] 输出:true 示例 2:
输入:points = [[1,1],[2,2],[3,3]] 输出:false
提示:
points.length == 3 points[i].length == 2 0 <= xi, yi <= 100
解题思路
法1
斜率计算:
回旋镖的定义,斜率不同
那么我们计算三个点其中两个点的斜率判断他们是否相同,如果相同返回false,否则返回ture
-
时间复杂度(O(1)) -
空间复杂度(O(n))
执行结果
法1
如果三个点共线,则它们的斜率相等。我们检查三个点的斜率是否相等,如果相等则返回 false,否则返回 true。
func isBoomerang(points [][]int) bool {
x1, y1 := points[0][0], points[0][1]
x2, y2 := points[1][0], points[1][1]
x3, y3 := points[2][0], points[2][1]
// 使用斜率判断三个点是否共线
// 如果斜率相等,则三个点共线,不构成回旋镖
return (y3-y2)*(x2-x1) != (y2-y1)*(x3-x2)
}
执行结果: 通过 显示详情 查看示例代码 添加备注
执行用时: 0 ms , 在所有 Go 提交中击败了 100.00% 的用户 内存消耗: 1.9 MB , 在所有 Go 提交中击败了 100.00% 的用户 通过测试用例: 206 / 206 炫耀一下:
本文由 mdnice 多平台发布