题目链接:力扣
思路:第一想法要用什么算法呢?然后看了一眼是简单题,那肯定用不到啊。看了一眼数据,最多50个点,好吧,果断O(n^3)暴力解决。枚举所有三角形的面积,每次取一下最大值即可。因为题目给出了三个顶点的坐标,所以我们直接用向量来计算三角形的面积即可。
公式:在中,
,
,则
上代码:
import kotlin.math.abs
import kotlin.math.max
class Solution {
fun largestTriangleArea(points: Array<IntArray>): Double {
var result = 0.0
for (i in points.indices) {
for (j in points.indices) {
for (k in points.indices) {
if (i != j && i != k && j != k) {
val x1 = points[j][0] - points[i][0]
val y1 = points[j][1] - points[i][1]
val x2 = points[k][0] - points[i][0]
val y2 = points[k][1] - points[i][1]
result = max(result, abs(x1 * y2 - x2 * y1) / 2.0)
}
}
}
}
return result
}
}