LeetCode 812.最大三角形的面积
给你一个由 X-Y 平面上的点组成的数组 points
,其中 points[i] = [xi, yi]
。从其中取任意三个不同的点组成三角形,返回能组成的最大三角形的面积。与真实值误差在 10-5
内的答案将会视为正确答案。
示例 1:
输入:points = [[0,0],[0,1],[1,0],[0,2],[2,0]] 输出:2.00000 解释:输入中的 5 个点如上图所示,红色的三角形面积最大。
示例 2:
输入:points = [[1,0],[0,0],[0,1]] 输出:0.50000
提示:
3 <= points.length <= 50
-50 <= xi, yi <= 50
- 给出的所有点 互不相同
这里我们使用向量叉积法求三角形面积:
A:(x1,y1)
B:(x2,y2)
C:(x3,y3)
AB=(x2-x1,y2-y1)
AC=(x3-x1,y3-y1)
S平行四边形=AB×AC=(x2-x1)(y3-y1)-(y2-y1)(x3-x1)
S三角形=S平行四边形/2
class Solution {
public:double largestTriangleArea(vector<vector<int>>& points) {int l=int(size(points));int area=0;for(int i=0;i<l-2;i++){for(int j=i+1;j<l-1;j++){for(int k=j+1;k<l;k++){area=max(area,abs((points[j][0]-points[i][0])*(points[k][1]-points[i][1])-(points[j][1]-points[i][1])*(points[k][0]-points[i][0])));}}}return area/2.00000;}
};