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]);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_34446716/article/details/85792518