题目描述
这是 LeetCode 上的 「812. 最大三角形面积」 ,难度为 「简单」。
Tag : 「模拟」
给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积。
示例:
输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]]输出: 2解释: 这五个点如下图所示。组成的橙色三角形是最大的,面积为2。
注意:
![3 <= points.length <= 50.]()
不存在重复的点。
![-50 <= points[i][j] <= 50]()
结果误差值在 ![10^{-6}]() 以内都认为是正确答案。
模拟
根据题意模拟即可:枚举三角形三个顶点并计算面积。
代码:
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 原题链接和其他优选题解。
原文:https://juejin.cn/post/7097792112661364773