侧边栏壁纸
博主头像
GabrielxD

列車は必ず次の駅へ。では舞台は?私たちは?

  • 累计撰写 471 篇文章
  • 累计创建 108 个标签
  • 累计收到 9 条评论

目 录CONTENT

文章目录

【数学】有效的回旋镖

GabrielxD
2022-06-08 / 0 评论 / 0 点赞 / 30 阅读 / 351 字 / 正在检测是否收录...

题目

1037. 有效的回旋镖


给定一个数组 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

解题

方法一:数学 斜率

思路

【遍历】表示一个折线图的最少线段数. 这个题的简化版,数据量小且固定,直接计算三点构成的两线斜率是否相等返回即可。

计算斜率:k=y1y0x1x0=ΔyΔxk=\frac{y_1-y_0}{x_1-x_0}=\frac{\Delta{y}}{\Delta{x}}

比较斜率:ΔyΔx=ΔyΔxΔxΔy=ΔxΔy\frac{\Delta{y}}{\Delta{x}}=\frac{\Delta{y\prime}}{\Delta{x\prime}} \Longrightarrow \Delta{x\prime}\Delta{y}=\Delta{x}\Delta{y\prime}

代码

class Solution {
    public boolean isBoomerang(int[][] points) {
        return (points[2][1] - points[1][1]) * (points[1][0] - points[0][0]) !=
            (points[1][1] - points[0][1]) * (points[2][0] - points[1][0]);
    }
}
0

评论区