158、最大三角形面积
题目描述
直接弄出根据三点来求一个三角形的面积公式即可
注意的是需要求模,然后用for循环进行遍历
int tem = Math.abs(x2y3 + x1y2 + x3y1 - x3y2 - x2y1 - x1y3);
class Solution {
public double largestTriangleArea(int[][] points) {
double max = 0;
for (int i = 0; i < points.length; i++) {
//points有n行,两列
int[] js = points[i];
for (int j = i + 1; j < points.length; j++) {
for (int k = j + 1; k < points.length; k++) {
max = Math.max(max,getarea_Triangle(points[i][0], points[i][1], points[j][0], points[j][1], points[k][0], points[k][1]) );
}
}
}
return max;
}
//给三个点,求出面积
public static double getarea_Triangle(int x1,int y1 ,int x2,int y2,int x3,int y3){
//求模
int tem = Math.abs(x2*y3 + x1*y2 + x3*y1 - x3*y2 - x2*y1 - x1*y3);
// System.out.println(tem);
return (double)tem/2;
}
}
排名靠前的代码,传入的是数组,而不是六个点,这个差不多吧
class Solution {
public double largestTriangleArea(int[][] points) {
double res=0;
for(int i=0;i < points.length;i++){
for(int j = i+1; j < points.length; j++){
for(int n = j+1; n < points.length; n++){
res = Math.max(res, area(points[i], points[j], points[n]));
}
}
}
return res;
}
public static double area(int[] P, int[] Q, int[] R) {
return 0.5 * Math.abs(P[0]*Q[1] + Q[0]*R[1] + R[0]*P[1]
-P[1]*Q[0] - Q[1]*R[0] - R[1]*P[0]);
}
}