812. Largest Triangle Area

Leetcode link

题目简介

这题是一道纯数学的简单题

题目给我们一个参数 points 代表直角坐标上的若干个点,要求我们求出这些点能够构成的最大三角形面积

解题思路

这道题需要用到一个公式:https://en.wikipedia.org/wiki/Shoelace_formula

简单来说,平面直角坐标系的三角形面积可以通过:$\frac{1}{2}|(x_1y_2 - y_1x_2) + (x_2y_3 - y_2x_3) + (x_3y_1 - x_1y_3)|$ 来计算

然后我们用三个循环依次遍历所有的点就可以得到最大的面积了

Javascript

/**
 * @param {number[][]} points
 * @return {number}
 */
var largestTriangleArea = function (points) {
    let maxArea = 0
    const len = points.length

    for (let i = 0; i < len; i++) {
        for (let j = i + 1; j < len; j++) {
            for (let k = j + 1; k < len; k++) {
                const [x1, y1] = points[i]
                const [x2, y2] = points[j]
                const [x3, y3] = points[k]

                const area = Math.abs((x1 * y2 - y1 * x2) + (x2 * y3 - y2 * x3) + (x3 * y1 - x1 * y3)) / 2
                maxArea = Math.max(area, maxArea)
            }
        }
    }

    return maxArea
};

results matching ""

    No results matching ""