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.

file

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
最后修改日期: 2021年2月18日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。