【Leetcode刷題篇】leetcode812 最大三角形面積

mind_programmonkey發表於2021-01-01

給定包含多個點的集合,從其中取三個點組成三角形,返回能組成的最大三角形的面積。

示例:
輸入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]]
輸出: 2
解釋:
這五個點如下圖所示。組成的橙色三角形是最大的,面積為2。
在這裡插入圖片描述

注意:
3 <= points.length <= 50.
不存在重複的點。
-50 <= points[i][j] <= 50.
結果誤差值在 10^-6 以內都認為是正確答案。

class Solution {
    public double largestTriangleArea(int[][] points) {
	    	// 儲存結果
	    	double res = 0;
	    	// for迴圈遍歷 
	    	int len = points.length;
	    	for(int i=0;i<len-2;i++) {
	    		for(int j=i+1;j<len-1;j++) {
	    			for(int k=j+1;k<len;k++) {
	    				res = Math.max(res,area(points[i],points[j],points[k]));
	    			}
	    		}
	    	}
	    	return res;
	    }
	    
	    // 鞋帶公式計算面積
	    public 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]);
	    }
}

相關文章