812. Largest Triangle Area*
https://leetcode.com/problems/largest-triangle-area/
题目描述
You have a list of points in the plane. Return the area of the largest triangle that can be formed by any 3 of the points.
Example:
Input: points = [[0,0],[0,1],[1,0],[0,2],[2,0]]
Output: 2
Explanation:
The five points are show in the figure below. The red triangle is the largest.
Notes:
3 <= points.length <= 50
.- No points will be duplicated.
-50 <= points[i][j] <= 50
.- Answers within
10^-6
of the true value will be accepted as correct.
C++ 实现 1
别问, 问就是数学不够强…
参考: [C++/Java/Python] Solution with Explanation and Prove
class Solution {
public:
double largestTriangleArea(vector<vector<int>>& points) {
double ans=0;
for (int i=0;i<points.size()-2;i++)
for (int j=i+1;j<points.size()-1;j++)
for (int k=j+1;k<points.size();k++){
int z = (points[j][0]-points[i][0])*(points[k][1]-points[i][1])-(points[j][1]-points[i][1])*(points[k][0]-points[i][0]);
ans=max(ans,double(abs(z)));
}
return ans/2;
}
};