跳到主要内容

812.最大三角形面积

链接:812.最大三角形面积
难度:Easy
标签:几何、数组、数学
简介:给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积。

题解 1 - cpp

  • 编辑时间:2022-03-20
  • 执行用时:24ms
  • 内存消耗:7.4MB
  • 编程语言:cpp
  • 解法介绍:遍历。
class Solution {
public:
double largestTriangleArea(vector<vector<int>>& points) {
int n = points.size();
double ans = 0;
for (int i1 = 0; i1 < n; i1++) {
for (int i2 = i1 + 1; i2 < n; i2++) {
for (int i3 = i2 + 1; i3 < n; i3++) {
if (check(points, i1, i2, i3)) continue;
ans = max(ans, comp_area(points, i1, i2, i3));
}
}
}
return ans;
}
bool check(vector<vector<int>>& points, int i1, int i2, int i3) {
return points[i1][0] == points[i2][0] &&
points[i1][0] == points[i3][0] ||
points[i1][1] == points[i2][1] && points[i1][1] == points[i3][1];
}
double comp_area(vector<vector<int>>& points, int i1, int i2, int i3) {
double line1 = comp_line(points, i1, i2),
line2 = comp_line(points, i1, i3),
line3 = comp_line(points, i2, i3),
p = (line1 + line2 + line3) / 2;
return sqrt(p * (p - line1) * (p - line2) * (p - line3));
}
double comp_line(vector<vector<int>>& points, int i1, int i2) {
double x = pow(points[i1][0] - points[i2][0], 2),
y = pow(points[i1][1] - points[i2][1], 2);
return sqrt(x + y);
}
};