812. 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.
解决
利用数学知识来解决问题。
若已知三角形中三个点的坐标(如上图),则
【n为points
中的点的个数】
- 时间复杂度:O(n * n * n)
- 空间复杂度:O(1)
// Runtime: 16ms
class Solution {
public:
double largestTriangleArea(vector<vector<int>>& points) {
double result = 0;
int num = points.size();
for (int i = 0; i < num; i++) { // point A
for (int j = 0; j < num; j++) { // point B
for (int k = 0; k < num; k++) { // point C
double area = 0.5 * abs(points[i][0] * points[j][1] + points[j][0] * points[k][1] + points[k][0] * points[i][1] - points[i][0] * points[k][1] - points[k][0] * points[j][1] - points[j][0] * points[i][1]);
result = max(result, area);
}
}
}
return result;
}
};