812.最大三角形面积

812. 最大三角形面积

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

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

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

方法:

1.已知三角形底a,高h,则

2.已知三角形三边a,b,c,则

海伦公式)(

S=sqrt[p(p-a)(p-b)(p-c)]

=sqrt[(1/16)(a+b+c)(a+b-c)(a+c-b)(b+c-a)]

=1/4sqrt[(a+b+c)(a+b-c)(a+c-b)(b+c-a)]

3.已知三角形两边a,b,这两边夹角C,则

,即两夹边之积乘夹角正弦值的一半。

4.设三角形三边分别为a、b、c,内切圆半径为r

则三角形面积

5.设三角形三边分别为a、b、c,外接圆半径为R

则三角形面积=abc/4R

S=2R²·sinA·sinB·sinC

6.行列式形式

为三阶行列式,此三角形ABC

在平面直角坐标系内

,这里ABC选取最好按逆时针顺序从右上角开始取,因为这样取得出的结果一般都为正值,如果不按这个规则取,可能会得到负值,但不要紧,只要取绝对值就可以了,不会影响三角形面积的大小。该公式的证明可以借助“两夹边之积乘夹角的正弦值”的面积公式 [1] 。

7.海伦——秦九韶三角形中线面积公式:

S=√[(Ma+Mb+Mc)(Mb+Mc-Ma)(Mc+Ma-Mb)*(Ma+Mb-Mc)]/3

其中Ma,Mb,Mc为三角形的中线长.

8.根据三角函数求面积:

S= ½ab sinC=2R² sinAsinBsinC= a²sinBsinC/2sinA

注:其中R为外接圆半径。

9.根据向量求面积:

其中,(x1,y1,z1)(x2,y2,z2) 分别为向量 ABAC 在空间直角坐标系下的坐标表达,即:

向量邻边构成三角形面积等于向量邻边构成平行四边形面积的一半

海伦公式的推理

已知三角形三边a,b,c,则:

(海伦公式)(p=(a+b+c)/2)

S=sqrt[p(p-a)(p-b)(p-c)]

=sqrt[(1/16)(a+b+c)(a+b-c)(a+c-b)(b+c-a)]

=1/4sqrt[(a+b+c)(a+b-c)(a+c-b)(b+c-a)]

思路:

要求三角形面积,要知道公式,我们这道题就用第六种方法

把每三点一个三角形大小求出来,然后找出最大的

代码:

var largestTriangleArea = function(points) {
     const n = points.length;
     let ret = 0.0;
     //三次循环找出最大面积
     for (let i = 0; i < n; i++) {
         for (let j = i + 1; j < n; j++) {
             for (let k = j + 1; k < n; k++) {
                 ret = Math.max(ret, triangleArea(points[i][0], points[i][1], points[j][0], points[j][1], points[k][0], points[k][1]));
             }
         }
     }
     return ret;
 };
 ​
 //求三角形面积
 const triangleArea = (x1, y1, x2, y2, x3, y3) => {
     return 0.5 * Math.abs(x1 * y2 + x2 * y3 + x3 * y1 - x1 * y3 - x2 * y1 - x3 * y2);
 }
代码参考LeetCode官网
 ​
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值