LC 812. 最大三角形面积

题目描述

这是 LeetCode 上的 812. 最大三角形面积 ,难度为 简单

给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积。

示例:

1
2
3
4
5
6
输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]]

输出: 2

解释:
这五个点如下图所示。组成的橙色三角形是最大的,面积为2。

注意:

  • $3 <= points.length <= 50.$
  • 不存在重复的点。
  • $-50 <= points[i][j] <= 50$
  • 结果误差值在 $10^{-6}$ 以内都认为是正确答案。

模拟

根据题意模拟即可:枚举三角形三个顶点并计算面积。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
public double largestTriangleArea(int[][] ps) {
int n = ps.length;
double ans = 0;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
for (int k = j + 1; k < n; k++) {
int cur = cross(ps[j][0] - ps[i][0], ps[j][1] - ps[i][1], ps[k][0] - ps[i][0], ps[k][1] - ps[i][1]);
ans = Math.max(ans, Math.abs(cur / 2.0));
}
}
}
return ans;
}
int cross(int a, int b, int c, int d) {
return a * d - c * b;
}
}

  • 时间复杂度:$O(n^3)$
  • 空间复杂度:$O(1)$

最后

这是我们「刷穿 LeetCode」系列文章的第 No.812 篇,系列开始于 2021/01/01,截止于起始日 LeetCode 上共有 1916 道题目,部分是有锁题,我们将先把所有不带锁的题目刷完。

在这个系列文章里面,除了讲解解题思路以外,还会尽可能给出最为简洁的代码。如果涉及通解还会相应的代码模板。

为了方便各位同学能够电脑上进行调试和提交代码,我建立了相关的仓库:https://github.com/SharingSource/LogicStack-LeetCode

在仓库地址里,你可以看到系列文章的题解链接、系列文章的相应代码、LeetCode 原题链接和其他优选题解。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!