09 Sept 2026Go / Python / TypeScriptEasy

Largest Triangle Area

Find the maximum area of a triangle formed by any three supplied points.

Enumerate every point triple and use the absolute two-dimensional cross product to compute twice its area.

complexity

O(n^3) time and O(1) extra space.

solution files

  • Go largest-triangle-area/solution.go
  • Python largest-triangle-area/solution.py
  • TypeScript largest-triangle-area/solution.ts

Solution files

Golargest-triangle-area/solution.go
package main

func largestTriangleArea(points [][]int) float64 {
	twiceArea := 0
	for i := 0; i < len(points); i++ {
		for j := i + 1; j < len(points); j++ {
			for k := j + 1; k < len(points); k++ {
				area := absArea((points[j][0]-points[i][0])*(points[k][1]-points[i][1]) - (points[j][1]-points[i][1])*(points[k][0]-points[i][0]))
				if area > twiceArea {
					twiceArea = area
				}
			}
		}
	}
	return float64(twiceArea) / 2
}
func absArea(value int) int {
	if value < 0 {
		return -value
	}
	return value
}
Pythonlargest-triangle-area/solution.py
class Solution:
    def largestTriangleArea(self, points: list[list[int]]) -> float:
        twice_area = class="syntax-number">0
        for i in range(len(points)):
            for j in range(i + class="syntax-number">1, len(points)):
                for k in range(j + class="syntax-number">1, len(points)):
                    area = abs((points[j][class="syntax-number">0] - points[i][class="syntax-number">0]) * (points[k][class="syntax-number">1] - points[i][class="syntax-number">1]) - (points[j][class="syntax-number">1] - points[i][class="syntax-number">1]) * (points[k][class="syntax-number">0] - points[i][class="syntax-number">0]))
                    twice_area = max(twice_area, area)
        return twice_area / class="syntax-number">2
TypeScriptlargest-triangle-area/solution.ts
function largestTriangleArea(points: number[][]): number {
  let twiceArea = class="syntax-number">0;
  for (let i = class="syntax-number">0; i < points.length; i += class="syntax-number">1) for (let j = i + class="syntax-number">1; j < points.length; j += class="syntax-number">1) for (let k = j + class="syntax-number">1; k < points.length; k += class="syntax-number">1) {
    const area = Math.abs((points[j][class="syntax-number">0] - points[i][class="syntax-number">0]) * (points[k][class="syntax-number">1] - points[i][class="syntax-number">1]) - (points[j][class="syntax-number">1] - points[i][class="syntax-number">1]) * (points[k][class="syntax-number">0] - points[i][class="syntax-number">0]));
    twiceArea = Math.max(twiceArea, area);
  }
  return twiceArea / class="syntax-number">2;
}