题目描述:
给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积。
示例:
输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]]
输出: 2
解释:
这五个点如下图所示。组成的橙色三角形是最大的,面积为2。
注意:
3 <= points.length <= 50
.- 不存在重复的点。
-
-50 <= points[i][j] <= 50
. - 结果误差值在
10^-6
以内都认为是正确答案。
解题思路:
本题主要难点——已知三点,求三角形面积。(推导过程自行百度)
设三点坐标,A(a,b),B(c,d),C(e,f)A(a,b),B(c,d),C(e,f),则三角形面积为
AC代码:
class Solution {
public:
double largestTriangleArea(vector<vector<int>>& points) {
double result = 0;
int num = points.size();
for (int i = 0; i < num; i++) {
for (int j = 0; j < num; j++) {
for (int k = 0; k < num; k++) {
double area = 0.5 * abs(points[i][0] * points[j][1] + points[j][0] * points[k][1] + points[k][0] * points[i][1] -points[i][0] * points[k][1] - points[k][0] * points[j][1] - points[j][0] * points[i][1]);
result = max(result, area);
}
}
}
return result;
}
};