158、最大三角形面積
阿新 • • 發佈:2019-01-08
題目描述
直接弄出根據三點來求一個三角形的面積公式即可
注意的是需要求模,然後用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]); } }