1037. 有效的回旋镖 : 简单计算几何运用题

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第16天,点击查看活动详情

题目描述

这是 LeetCode 上的 1037. 有效的回旋镖 ,难度为 简单

Tag : 「计算几何」、「数学」

给定一个数组 points,其中  p o i n t s [ i ] = [ x i , y i ] points[i] = [x_i, y_i]  表示 X-Y 平面上的一个点,如果这些点构成一个 回旋镖 则返回 true

回旋镖 定义为一组三个点,这些点 各不相同 且 不在一条直线上 。

示例 1:

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

输出:true
复制代码

示例 2:

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

输出:false
复制代码

提示:

  • p o i n t s . l e n g t h = = 3 points.length == 3
  • p o i n t s [ i ] . l e n g t h = = 2 points[i].length == 2
  • 0 < = x i , y i   < = 100 0 <= x_i, y_i <= 100

计算几何

共三个点,分别使用两个点计算向量,随后判断向量叉积是否为 0 0

代码:

class Solution {
    public boolean isBoomerang(int[][] ps) {
        return (ps[1][0] - ps[0][0]) * (ps[2][1] - ps[0][1]) != (ps[2][0] - ps[0][0]) * (ps[1][1] - ps[0][1]);
    }
}
复制代码
  • 时间复杂度: O ( 1 ) O(1)
  • 空间复杂度: O ( 1 ) O(1)

最后

这是我们「刷穿 LeetCode」系列文章的第 No.1037 篇,系列开始于 2021/01/01,截止于起始日 LeetCode 上共有 1916 道题目,部分是有锁题,我们将先把所有不带锁的题目刷完。

扫描二维码关注公众号,回复: 14245819 查看本文章

在这个系列文章里面,除了讲解解题思路以外,还会尽可能给出最为简洁的代码。如果涉及通解还会相应的代码模板。

为了方便各位同学能够电脑上进行调试和提交代码,我建立了相关的仓库:github.com/SharingSour…

在仓库地址里,你可以看到系列文章的题解链接、系列文章的相应代码、LeetCode 原题链接和其他优选题解。

猜你喜欢

转载自juejin.im/post/7106698470433488933