09 Sept 2026Go / Python / TypeScriptEasy

Largest Perimeter Triangle

Find the largest perimeter of a non-degenerate triangle constructible from three lengths.

Sort descending and return the first consecutive triple satisfying the triangle inequality; no later triple can have a larger perimeter.

complexity

O(n log n) time and language-dependent sorting space.

solution files

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

Solution files

Golargest-perimeter-triangle/solution.go
package main

import "sort"

func largestPerimeter(nums []int) int {
	sort.Sort(sort.Reverse(sort.IntSlice(nums)))
	for index := 0; index+2 < len(nums); index++ {
		if nums[index+1]+nums[index+2] > nums[index] {
			return nums[index] + nums[index+1] + nums[index+2]
		}
	}
	return 0
}
Pythonlargest-perimeter-triangle/solution.py
class Solution:
    def largestPerimeter(self, nums: list[int]) -> int:
        nums.sort(reverse=True)
        for first, second, third in zip(nums, nums[class="syntax-number">1:], nums[class="syntax-number">2:]):
            if second + third > first: return first + second + third
        return class="syntax-number">0
TypeScriptlargest-perimeter-triangle/solution.ts
function largestPerimeter(nums: number[]): number {
  nums.sort((left, right) => right - left);
  for (let index = class="syntax-number">0; index + class="syntax-number">2 < nums.length; index += class="syntax-number">1) if (nums[index + class="syntax-number">1] + nums[index + class="syntax-number">2] > nums[index]) return nums[index] + nums[index + class="syntax-number">1] + nums[index + class="syntax-number">2];
  return class="syntax-number">0;
}