LeetCode 812. 最大三角形面积

283 阅读2分钟

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

一、题目描述:

812. 最大三角形面积 - 力扣(LeetCode)

给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积。

示例:

输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]]
输出: 2
解释: 
这五个点如下图所示。组成的橙色三角形是最大的,面积为2

image.png

注意:

  • 3 <= points.length <= 50.
  • 不存在重复的点。
  •  -50 <= points[i][j] <= 50.
  • 结果误差值在 10^-6 以内都认为是正确答案。

二、思路分析:

我们可以枚举每一个三角形,计算面积并找出最大的面积值。根据三角形的三个顶点计算出面积的方法有很多种:

鞋带公式,用于计算任意多边形的面积,可用于计算三角形的面积;

海伦公式,从三个顶点得到三边长,并使用海伦公式计算出面积;

三角形面积公式 S = 1/2 * a * b * sin(C),首先得到两边的长度,通过叉积算出夹角的正弦值,并使用公式计算出面积。

三、AC 代码:

class Solution {
    public double largestTriangleArea(int[][] points) {
        int N = points.length;
        double area = 0;
        for (int i=0; i<N; i++) {
            for (int j=i+1; j<N; j++) {
                for (int k=j+1; k<N; k++) {
                    area = Math.max(area, getArea(points[i], points[j], points[k]));
                }
            }
        }
        return area;
    }

    public double getArea(int[] p, int[] q, int[] r) {
        return 0.5*Math.abs(p[0]*q[1] + q[0]*r[1]+r[0]*p[1]-p[1]*q[0]-q[1]*r[0]-r[1]*p[0]);
    }
}

范文参考:

812. 最大三角形面积 Java 三阶行列式求三角形面积 - 最大三角形面积 - 力扣(LeetCode)

考数学题,任意三角形的面积计算 - 最大三角形面积 - 力扣(LeetCode)

最大三角形面积——利用二维向量的外积坐标公式计算面积 - 最大三角形面积 - 力扣(LeetCode)