nice-people-frontend-community/nice-js-leetcode

[2022-06-08]1115. 有效的回旋镖👋几何👋数组👋数学

Opened this issue · 1 comments

题目链接: https://leetcode-cn.com/problems/valid-boomerang

难度: Easy
标签: 几何 数组 数学

1037. 有效的回旋镖

Description

Difficulty: 简单

Related Topics: 几何, 数组, 数学

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

Solution

思路

  • 只需要判断三个点是否形成一个三角形,
  • 计算三角形的面积:x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2), 将其与零进行比较
  • 如果为面积为0说明是一条线,无法形成回旋镖,
  • 如果不为0说明形成一个三角形,就返回 true

Language: JavaScript

/**
 * @param {number[][]} points
 * @return {boolean}
 */
var isBoomerang = function(points) {
    const [[x1, y1], [x2, y2], [x3, y3]] = points;

    return x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2) !== 0;
};