給定包含多個點的集合,從其中取三個點組成三角形,返回能組成的最大三角形的面積。
示例: 輸入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]] 輸出: 2 解釋: 這五個點如下圖所示。組成的橙色三角形是最大的,面積爲2。
注意:
3 <= points.length <= 50
.- 不存在重複的點。
-
-50 <= points[i][j] <= 50
. - 結果誤差值在
10^-6
以內都認爲是正確答案。
Code:
三層暴力循環
class Solution {
public double largestTriangleArea(int[][] points) {
double res = 0;
for (int i = 0; i < points.length - 2; i++) {
for (int j = i + 1; j < points.length - 1; j++) {
for (int k = j + 1; k < points.length; k++) {
res = Math.max(res, helper(points[i], points[j], points[k]));
}
}
}
return res;
}
private static double helper(int[] p1, int[] p2, int[] p3) {
return Math.abs(p1[0] * (p2[1] - p3[1]) + p2[0] * (p3[1] - p1[1]) + p3[0] * (p1[1] - p2[1])) / 2.0;
}
}