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.
Solution in python:
class Solution:
def largestTriangleArea(self, points: List[List[int]]) -> float:
max_area = 0
def backtrace(points, k, s):
if len(s) == 3:
area = abs((1/2)*(s[0][0]*(s[1][1]-s[2][1])+s[1][0]*(s[2][1]-s[0][1])+s[2][0]*(s[0][1]-s[1][1])))
nonlocal max_area
if area > max_area:
max_area = area
return
for i in range(k, len(points)):
s.append(points[i])
backtrace(points, k+1, s)
s.pop()
backtrace(points, 0, [])
return max_area
留言