812. 最大三角形面积(2022-5-15)
给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积。
示例:
输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]]
输出: 2
解释:
这五个点如下图所示。组成的橙色三角形是最大的,面积为2。
注意:
- 3 <= points.length <= 50.
- 不存在重复的点。
- -50 <= points[i][j] <= 50.
- 结果误差值在 10^-6 以内都认为是正确答案。
解题思路
遍历所有可能性,找到最大的面积
另外贴一个网上找的三点坐标计算面积公式
[
x
1
(
y
2
−
y
3
)
+
x
2
(
y
3
−
y
1
)
+
x
3
(
y
1
−
y
2
)
]
/
2
[x1(y2 - y3) + x2(y3 - y1) + x3(y1 - y2)]/2
[x1(y2−y3)+x2(y3−y1)+x3(y1−y2)]/2
= x 1 y 2 + x 2 y 3 + x 3 y 1 − x 1 y 3 − x 2 y 1 − x 3 y 2 = x1y2 + x2y3 + x3y1 - x1y3 - x2y1 - x3y2 =x1y2+x2y3+x3y1−x1y3−x2y1−x3y2
var largestTriangleArea = function(points) {
const n = points.length
let ans = 0
for(let i = 0; i < n-2; i++){
for(let j = 0; j < n-1; j++){
for(let k = 0; k < n; k++){
const [[x1,y1],[x2,y2],[x3,y3]] = [points[i],points[j],points[k]]
ans = Math.max(ans, Math.abs(x1 * y2 + x2 * y3 + x3 * y1 - x1 * y3 - x2 * y1 - x3 * y2))
}
}
}
return ans/2
};
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/largest-triangle-area
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。