题目
给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积。
示例:
输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]]
输出: 2
解释:
这五个点如下图所示。组成的橙色三角形是最大的,面积为2。注意:
3 <= points.length <= 50.
不存在重复的点。
-50 <= points[i][j] <= 50.
结果误差值在 10^-6 以内都认为是正确答案。来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/largest-triangle-area
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
暴力枚举三个顶点求面积即可。
已知三个点坐标求三角形面积的公式为%20%20(y2%20-%20y3)%20-%20(x2%20-%20x3)%20%20(y1%20-%20y3))%7C#card=math&code=S%20%3D%201%2F2%20%2A%20%7C%28x1%20-%20x3%29%20%2A%20%28y2%20-%20y3%29%20-%20%28x2%20-%20x3%29%20%2A%20%28y1%20-%20y3%29%29%7C&id=w1NLl)
代码
class Solution {
public double largestTriangleArea(int[][] points) {
double ans = 0;
int n = points.length;
for (int i = 0; i < n; i++) {
int x1 = points[i][0];
int y1 = points[i][1];
for (int j = i + 1; j < n; j++) {
int x2 = points[j][0];
int y2 = points[j][1];
for (int k = j + 1; k < n; k++) {
int x3 = points[k][0];
int y3 = points[k][1];
ans = Math.max(ans, 0.5 * Math.abs((x1 - x3) * (y2 - y3) - (x2 - x3) * (y1 - y3)));
}
}
}
return ans;
}
}